2014-01-07 12 views
0

爲了防止一個iframe從閃爍之前,我設置的setTimeout內其知名度(CSS的設置爲visibility:hidden的)定位與JS/jQuery的iframe中的DOM加載

setTimeout(function(){ 
$n('#myFrame').css('visibility','visible');}, 750); 

廠很好,但是當我加載幀內的後續位置時,由於可見性已經設置,閃爍行爲將會返回。

我想要做的是創建一個函數,在DOM /頁面加載之前創建一個以iframe爲目標的函數,將可見性設置爲隱藏,然後設置setTimeout。

請記住,這個腳本會在的ServiceNow平臺上運行,這意味着一些選項是有限的(不能加載文件頭,等)

這有點像一個反向的document.ready()。這甚至有可能嗎?

感謝您的任何線索,

帕科

+0

JavaScript需要一個事件才能運行。找出哪些事件導致iframe改變,並說事件隱藏它並根據需要再次顯示它。 –

+0

嗨帕克,你找到了解決方案嗎?我被卡住了,試圖用Jelly隱藏UI頁面中的所有內容,而且在Dom加載完成後,它似乎總會被觸發。謝謝 –

回答

1

只需設置它的源:

<iframe style="display: none;"></iframe> 

時要那麼取消隱藏它。

0
$('buttonToChangeTheIframePage').click(function(e){ 
    e.preventDefault(); 

     $('#myFrame').css('visibility','hidden'); 
     $('#myFrame').delay(1000).css('visibility','visible'); 
}); 

這假定您從外部加載iframe的位置 - iframe中的任何內容(如鏈接)仍會觸發此行爲。

編輯

這實際上是更好,會爲所有的情況下工作(我認爲 - 只是檢查沒有愚蠢的錯誤,未測試)

<iframe id="myFrame" src="http://www.google.com/" onLoad="hideUnhide();"></iframe> 

function hideUnhide(){ 
    $('#myFrame').css('visibility','hidden').delay(1000).css('visibility','visible'); 

} 
+0

我確實從iframe中加載位置。 –

0

使用addAfterPageLoadedEvent(func)js_include_doc_type.js

<iframe id="gsft_main" style="visibility: hidden;"> 

anything .... 

<script> 
addAfterPageLoadedEvent(function() { 
    $j('#gsft_main').css('visibility','visible'); 
}); 
</script> 

</iframe>