2011-06-06 63 views
0

我想隱藏加載在iFrame中的網站的元素。腳本和網站可能需要一段時間,因此請求iFrame內容僅在修改後才顯示。如何使IE 8在onload元素完成之前不顯示任何內容到iFrame?

我使用onload事件來執行隱藏元素的腳本。我可以訪問iFrame內容(它位於相同的域,但不是相同的服務器/網絡)。

function frameLoaded() { 
sleep(3000); //simulating the time the script needs 
var leftDiv = window.frames.testFrame.document.getElementById("leftcol"); 
leftDiv.style.display = "none"; 
} 

簡單睡眠功能:

function sleep(milliSeconds){ 
var startTime = new Date().getTime(); // get the current time 
while (new Date().getTime() < startTime + milliSeconds); // hog cpu 
} 

當與所述iFrame網站被裝載在第一次滾動條和一些樣式的元件示出,但沒有任何內容文本:

http://img651.imageshack.us/img651/5082/beforeu.png

當腳本完成時,頁面顯示爲應該是(天藍色的div變爲隱藏):

http://img51.imageshack.us/img51/6806/afterq.png

雖然腳本在工作,但不應該顯示任何內容。無論是一個空的iframe或等待onload結束的整個網站都足夠了。

+0

您是否正在加載您自己的網站?或者它是第三方網站?我只問,因爲如果你可以添加一些JavaScript的網站被加載到IFrame中,你可以把以下行document.body.onload = function(){parent.frameLoaded();}並擺脫所有這些睡眠函數調用。 – Zoidberg 2011-06-06 11:17:36

+0

這是第三方。睡眠只是爲了模擬一個「長」的腳本執行時間。顯然,腳本確實有可能需要一些時間。這將是相當複雜,也可以通過智能手機訪問 – user756954 2011-06-06 11:26:25

回答

1

你可以有<iframe id="iframe" style="display: none">隱藏在你的父頁面加載並在onload事件這一項設置爲可見的iframe:

function frameLoaded() { 
    sleep(3000); //simulating the time the script needs 
    var leftDiv = window.frames.testFrame.document.getElementById("leftcol"); 
    leftDiv.style.display = "none"; 
    document.getElementById("iframe").style.display = 'block'; 
} 

BTW:此睡眠功能應該被扔掉。

+0

謝謝,可以考慮一下我自己>。< PS:睡眠只是爲了模擬一個「長」的腳本執行時間。 – user756954 2011-06-06 11:33:56

相關問題