第三方腳本在我的網頁上創建一個iframe。我需要知道這個iframe何時準備好,所以我可以操縱它的DOM。檢查是否iframe是準備被寫入
我能想到哈克辦法:反覆嘗試修改iframe的DOM和返回成功,當我們改變兩次嘗試之間做出棒。爲了這個工作,我更喜歡一個屬性,我可以反覆檢查iframe。
是否有替代方案,跨瀏覽器已收到方法知道iframe已準備好?例如。我們可以重新定義的onLoad函數來調用到我們的代碼(但我不知道如果我能做到這一點,因爲我沒有創建的iframe)。
第三方腳本在我的網頁上創建一個iframe。我需要知道這個iframe何時準備好,所以我可以操縱它的DOM。檢查是否iframe是準備被寫入
我能想到哈克辦法:反覆嘗試修改iframe的DOM和返回成功,當我們改變兩次嘗試之間做出棒。爲了這個工作,我更喜歡一個屬性,我可以反覆檢查iframe。
是否有替代方案,跨瀏覽器已收到方法知道iframe已準備好?例如。我們可以重新定義的onLoad函數來調用到我們的代碼(但我不知道如果我能做到這一點,因爲我沒有創建的iframe)。
你可以注入任意腳本代碼到您的iframe?如果是這樣,你應該能夠做到這一點,以便在iframe加載時在iframe中執行一些代碼,以調用父頁面中的代碼。
具有可變父:
var setToLoad = false;
跟進一個函數來設置它:
function SetToLoad() {
setToLoad = true;
}
在孩子iframe中調用這個函數
然後使用window.opener
function CallSetToLoad() {
window.opener.SetToLoad();
}
window.onload = CallSetToLoad;
這將不會運行,直到iframe中完成加載,如果它是在同一個域中,它會允許接觸到揭幕戰。這需要編輯第三方腳本的一小部分。
編輯:另一種解決方案
既然你不能編輯腳本,你可以嘗試這樣的:
frames["myiframe"].onload = function()
{
// do your stuff here
}
第一:你可能不能夠當它來操縱它的DOM從其他域加載html
而您可能對DOMready感興趣。 這裏看: jQuery .ready in a dynamically inserted iframe
使用jquery?
function callIframe(url, callback) {
$(document.body).append('<IFRAME id="myId" ...>');
$('iframe#myId').attr('src', url);
$('iframe#myId').load(function()
{
callback(this);
});
}
比拉爾回答,
有,你可以檢查(在IE工程)一document.readyState屬性。
foo(){
if([your iframe id].document.readyState != "complete")
{
setTimeout("foo()", 500); //wait 500 ms then call foo
}
else
{
//iframe doc is ready
}
}
阿爾卡季
這將不適合我,因爲我無法更改第三方腳本(或要求他們) – 2010-02-16 23:40:46
@Bilal阿斯拉姆:添加編輯 – 2010-02-17 02:07:51
問題的加載事件與iframes是隻有在所有的圖像和子幀加載後纔會觸發。像ready函數的jQuery會更有用。 – Tom 2011-12-14 12:58:00