4

如果您在 iframe 中设置 unbeforeunload 事件,则不会在您点击进入 iframe 中的链接时触发此事件。它适用于 IE 和 Firefox(不是 Opera,但 Opera 通常不支持 onbeforeunload AFAIK)。

只是想知道,我做错了什么吗?这种行为不应该是可能的吗?还是 Google Chrome/webkit 中的错误?任何解决方法?

代码示例:

测试.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>

测试2.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>
4

4 回答 4

2

我找到了一个不友好的方法来修复它。在我的包含域“abcom”的 parentPage 中:

<html>
<iframe id="OBU" name="OBU" src="c.d.com">
</iframe>
<script>
    window.onbeforeunload = function() {
        window.frames["OBUI"].frames["SubOBUI"].location =
                "a.b.com/demo.jpg?t="+(new Date()).getTime();
    }
</script>
</html>

在我的“cdcom”中:

<iframe id="SubOBUI" name="SubOBUI" src="a.b.com/demo.jpg"
        onload="someMethodThatShouldBeExecutedWhileUnload"></iframe>
<script>
    var someMethodThatShouldBeExecutedWhileUnload : function() {
            alert(1);
    }
</script>

试试!

于 2011-08-11T11:20:52.887 回答
2

现在已修复。见票。

于 2013-02-27T03:43:12.633 回答
1

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

https://bugs.webkit.org/show_bug.cgi?id=19418

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

于 2010-07-04T09:03:25.807 回答
1

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

于 2011-08-05T14:14:38.677 回答