Javascript IE中的iFrame OnLoad事件在Tapestry区域更新后未触发
我有一个挂毯区,里面有一个元素。我想运行一个简单的JS函数,只是隐藏和启用一些东西,当iframe加载完成时,没有什么特别的 在chrome和firefox中,它工作得很好,但我对IE9有问题Javascript IE中的iFrame OnLoad事件在Tapestry区域更新后未触发,javascript,internet-explorer,iframe,onload,Javascript,Internet Explorer,Iframe,Onload,我有一个挂毯区,里面有一个元素。我想运行一个简单的JS函数,只是隐藏和启用一些东西,当iframe加载完成时,没有什么特别的 在chrome和firefox中,它工作得很好,但我对IE9有问题 function afterExportLoad() { // hide throbber gif // enable submit button } 所以,自然地,我试着像这样内联地将它绑定到iframe <iframe onload="afterExportLoad()" ..
function afterExportLoad() {
// hide throbber gif
// enable submit button
}
所以,自然地,我试着像这样内联地将它绑定到iframe
<iframe onload="afterExportLoad()" .../>
通过本机JS
if (window.addEventListener) {
exportFrame.addEventListener("load", afterExportLoad, false);
} else if (window.attachEvent) {
exportFrame.attachEvent("onload", afterExportLoad);
} else {
exportFrame.onload = afterExportLoad;
}
使用上述任何方式,它都可以在IE中工作,但在IE中,在加载iframe后,gif被冻结,按钮仍然被禁用
有没有办法让它在IE9和其他IE版本中工作
谢谢:所以,我在这里闲逛了一下,找到了这个解决方案: 在函数中添加了浏览器检查
function afterExportLoad() {
if (document.getElementsByName('downloadFrame').length > 0) {
var exportFrame = document.getElementsByName('downloadFrame')[0];
if ((Prototype.Browser.IE && exportFrame.readyState == "complete") || (!Prototype.Browser.IE)) {
// my stuff
}
}
}
改变了事件
<iframe onreadystatechange="afterExportLoad();" ...>
如果有人提出更好的解决方案,请告诉我:
<iframe onreadystatechange="afterExportLoad();" ...>
if (document.getElementsByName('downloadFrame').length > 0) {
var exportFrame = document.getElementsByName('downloadFrame')[0];
if (!Prototype.Browser.IE) {
exportFrame.stopObserving('readystatechange', exportLoad);
exportFrame.onload = exportLoad;
}
}