Javascript IE中的iFrame OnLoad事件在Tapestry区域更新后未触发

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()" ..

我有一个挂毯区,里面有一个元素。我想运行一个简单的JS函数,只是隐藏和启用一些东西,当iframe加载完成时,没有什么特别的

在chrome和firefox中,它工作得很好,但我对IE9有问题

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;
        }
    }