Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript在IE7/8中加载iframe_Javascript_Internet Explorer_Iframe_Onload - Fatal编程技术网

使用Javascript在IE7/8中加载iframe

使用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加载到父页面。iframe包含一系列表单,我希望在每次重新加载iframe内容时(即,在iframe内容中提交表单之后)在父页面上执行操作。当前代码位于父页面上,适用于除IE之外的所有大型玩家(我只关注IE 7和IE 8)

在IE中,我缺少了什么可以阻止它的有效性?

替换:

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)