javascript - Tapestry 区域更新后,IE 中的 iFrame OnLoad 事件未触发

标签 javascript internet-explorer iframe onload

我有一个 Tapestry 区域,里面有一个 <iframe>元素。我想在 iframe 加载完成时运行一个简单的 JS 函数(只是隐藏和启用一些东西,没什么花哨的)。

在 Chrome 和 Firefox 中,它工作得很好,但我在 IE 9 中遇到了问题。

function afterExportLoad() {
    // hide throbber gif
    // enable submit button
}

所以,自然地,我尝试将它绑定(bind)到 iframe 像这样(内联)

<iframe onload="afterExportLoad()" .../>

通过 PrototypeJS

exportFrame.observe('load', 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 所在的区域更新

if (document.getElementsByName('downloadFrame').length > 0) {
        var exportFrame = document.getElementsByName('downloadFrame')[0];
        if (!Prototype.Browser.IE) {
            exportFrame.stopObserving('readystatechange', exportLoad);
            exportFrame.onload = exportLoad;
        }
    }

如果有人提出更好的解决方案,请告诉我:)

关于javascript - Tapestry 区域更新后,IE 中的 iFrame OnLoad 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22011169/

相关文章:

javascript - Javascript 是否有任何聪明的方法知道它在 iFrame 中执行?

javascript - Internet Explorer 中的菜单长达 2 行

javascript - AngularJS 基本路由程序不工作

html - Internet Explorer 中选择标签选项中的 CSS 伪元素

javascript - Google 地点自动完成功能在 IE 和 Safari 中不起作用

html - 无法在 Firefox 中设置 IFrame 的 document.body.innerHTML

iframe 元素中的 HTML5 数据属性

javascript - 如何修复(错误 : parsererror errorThrown: SyntaxError: Unexpected token < )using java action

javascript - 下拉值的 Jquery 选择器不区分大小写

jQuery 图片幻灯片 : captions not transparent in IE