2012-02-11 82 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

相关问题