使用Javascript在IE7/8中加载iframe
我有一个iframe加载到父页面。iframe包含一系列表单,我希望在每次重新加载iframe内容时(即,在iframe内容中提交表单之后)在父页面上执行操作。当前代码位于父页面上,适用于除IE之外的所有大型玩家(我只关注IE 7和IE 8) 在IE中,我缺少了什么可以阻止它的有效性?替换:使用Javascript在IE7/8中加载iframe,javascript,internet-explorer,iframe,onload,Javascript,Internet Explorer,Iframe,Onload,我有一个iframe加载到父页面。iframe包含一系列表单,我希望在每次重新加载iframe内容时(即,在iframe内容中提交表单之后)在父页面上执行操作。当前代码位于父页面上,适用于除IE之外的所有大型玩家(我只关注IE 7和IE 8) 在IE中,我缺少了什么可以阻止它的有效性?替换: iframe.onload = refresh 与: 要消除任何混淆,请执行以下操作: var iframe = document.getElementById('theiframe'); functi
iframe.onload = refresh
与:
要消除任何混淆,请执行以下操作:
var iframe = document.getElementById('theiframe');
function refresh( ) {
alert('foo');
}
if (iframe.attachEvent) iframe.attachEvent('onload', refresh);
else iframe.addEventListener('load', refresh, false)
完成提交后,可以通过调用
parent.refresh()
从iframe
调用它。尝试引用iframe的文档:var iframe=document.getElementById('theiframe').document;(不是答案,因为我猜:)load
和onload
之间有区别吗?即调用事件onload,而其他浏览器必须调用它load。我确实在结尾前添加了else if(iframe.addEventListener)…
子句。好球!我发现IE更喜欢:iframe.attachEvent(“onload”,刷新)@SamWatkins,这个案子在if声明中有说明。如果attachEvent是define,它就会使用它。虽然我最终可以控制父级和iframe,但以任何方式修改iframe都是非常困难的。好吧,但有时会触发onload
事件,而所有的工作都不会在iframe
中完成。我发现在iframe中添加“I'm done”命令对所有浏览器来说都更可靠。在这种情况下,iframe内容(资源、DOM等)是否加载完毕并不重要,重要的是“用户已开始查看新页面”。不过这一点很好。这个解决方案在IE 11中对我不起作用。父页面未受影响。@Mic,我的动机是向今天从谷歌搜索到这里的人提供信息。他们可能会寻找解决当前问题的方法;5年前没有问题。重申,这不是人身攻击,只是为一些人节省了一些时间。
iframe.attachEvent('load', refresh, false);
var iframe = document.getElementById('theiframe');
function refresh( ) {
alert('foo');
}
if (iframe.attachEvent) iframe.attachEvent('onload', refresh);
else iframe.addEventListener('load', refresh, false)