javascript - 动态创建的iframe触发onload事件两次

标签 javascript iframe

我动态创建了一个iframe,发现这个iframe触发了两次onload事件。

var i=0;
frameOnload=function(){
  console.log(i++);  
};

var ifr=document.createElement("iframe");  
ifr.src="javascript:(function(){document.open();document.write('test');document.close();})();";
ifr.onload=frameOnload;  
document.body.appendChild(ifr);

为什么我最后是1?
如何防止iframe的onload两次而不是将onload函数指向自身内部的null?

最佳答案

我也遇到了同样的问题,但是没有得到答案,所以我自己测试了一下。

如果您在 iframe 附加到正文之前附加 onload 事件,则 iframe onload 事件将在 webkit 浏览器 ( safari/chrome ) 中触发两次。

因此,您可以通过按以下方式更改代码来阻止 iframe 加载两次。

document.body.appendChild(ifr);
ifr.onload=frameOnload; // attach onload event after the iframe is added to the body

那么,你只会得到一个onload事件,这是文档真正加载的事件。

关于javascript - 动态创建的iframe触发onload事件两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781880/

相关文章:

javascript - 如何使用 'class' 而不是 'id' 来使用多个 float 帮助对话框?

javascript - 使用外部 javascript 在 iframe 中停止/暂停边缘动画的声音?

javascript - 拒绝在框架中显示,因为它将 'X-Frame-Options' 设置为 'SAMEORIGIN'

javascript - 连接表格数据和表单文本字段

javascript - NG 构建失败模块解析失败 : Unexpected token - nothing has changed

javascript - 如何在 react 中导入ipcRenderer?

javascript - 在 JavaScript 中使用 [] 相对于 new Array() 的优点

javascript - 单击 ul > li 仅在第一次有效

html - 如何在不使用框架集的情况下仅缩放 IFRAME 内容?

javascript - 纯JS跨源iframe内的视差效果?