iframe上的onbeforeunload事件在google chrome中未触发,在IE、firefox中有效

iframe上的onbeforeunload事件在google chrome中未触发,在IE、firefox中有效,iframe,google-chrome,onbeforeunload,Iframe,Google Chrome,Onbeforeunload,如果在iframe中设置了unbeforeunload事件,则在例如单击iframe中的链接时不会触发该事件。它在IE和Firefox中工作(不是Opera,但Opera通常不支持onbeforeunload) 只是想知道,我做错什么了吗?难道这种行为不可能吗?还是谷歌Chrome/webkit中的一个bug?有解决办法吗 代码示例: test.html: <html> <body> <p>Main page content</p>

如果在iframe中设置了unbeforeunload事件,则在例如单击iframe中的链接时不会触发该事件。它在IE和Firefox中工作(不是Opera,但Opera通常不支持onbeforeunload)

只是想知道,我做错什么了吗?难道这种行为不可能吗?还是谷歌Chrome/webkit中的一个bug?有解决办法吗

代码示例:

test.html:

<html>
  <body>
    <p>Main page content</p>
    <script type="text/javascript">
      window.onbeforeunload = function() {alert('unloadevent in main window');};
    </script>
    <iframe id="tpa" src="..test2.html"></iframe>
  </body>
</html>

主页内容

window.onbeforeunload=函数(){alert('unloadevent in main window');};
test2.html:

<html>
  <body>
    <script type="text/javascript">
      self.onbeforeunload = function() {alert('unloadevent in frame window');};
    </script>
    <a href="http://www.google.com/">Link to for instance google</a>
  </body>
</html>

self.onbeforeunload=函数(){alert('unloadevent in frame window');};

这似乎是webkit中的一个未解决问题(而且不会很快解决):


如果有人知道解决方法,请告诉我。

替代方法可能是在文档级别处理iframe链接中的单击事件,或者预处理iframe页面并更改链接以执行自定义JS处理程序。然后根据您的业务规则抑制click事件的传播。

我找到了一个ungentle方法来修复它。 在包含域“a.b.com”的my parentPage中:


window.onbeforeunload=函数(){
window.frames[“OBUI”]。frames[“SubOBUI”]。位置=
“a.b.com/demo.jpg?t=“+(新日期()).getTime();
}
在我的“c.d.com”中:


var somemethods应该在加载时执行:function(){
警报(1);
}
试试看

现在已修复此问题