2012-02-11 37 views
3

我正在努力解決我無法將任何onload函數附加到我的動態創建的iframe的問題。這隻發生在IE中,在FF中工作。這裏是我的代碼:IE動態創建Iframe的onload函數從來沒有調用

var ifrm = document.createElement("IFRAME"); 
ifrm.setAttribute("src", "legacy-hostpage.html?rnd=" + new Date().getTime()); 
ifrm.style.width = "100%"; 
ifrm.style.height = "400px"; 
ifrm.name = "legacy-frame"; 
ifrm.id = "IFRM-" + new Date().getTime(); 

ifrm.onload = function() { 
    alert('onload onload'); 
}; 

wrapper.appendChild(ifrm); 

我希望我可以使用jQuery在這個項目,但我不能..你能告訴我什麼是錯的?

回答

2

我想你應該使用IE的attachEvent函數。

function myLoad() { 
     alert("onload onload"); 
    } 

    if (window.addEventListener) { 
     ifrm.addEventListener("load", myLoad, false); 
    } 
    else if (window.attachEvent) { 
     ifrm.attachEvent("onload", myLoad); 
    } 
    else { 
     ifrm.onload = myLoad; 
    } 

    wrapper.appendChild(ifrm); 

上面的代碼應該可以在所有瀏覽器中正常工作,沒有任何問題。

+0

非常感謝,救了我的日子:-) – jabal 2012-02-11 16:24:48

+0

如果你想讓你的活動可靠地開火,請參閱雷米的回答。 – EricLaw 2013-08-16 19:25:59

+0

加載PDF時,這不適用於我和其他人。另一個解決方案是把你的iframe放在一個iframe中:http://stackoverflow.com/questions/23412047/onload-event-for-dynamically-created-iframe-never-fires-in-ie – Richard 2015-08-21 12:44:12

2

您應該在設置src屬性之前添加onload回調。

+0

這是正確的。如果IFRAME的加載速度很快(例如從緩存或什麼的),你的事件處理程序可能不會觸發。 – EricLaw 2013-08-16 19:25:16

相關問題