如果您在iframe中设置了unbeforeunload事件,则在您点击iframe中的链接时不会触发此事件。它适用于IE和Firefox(不是Opera,但Opera在一般AFAIK中不支持onbeforeunload)。
只是想知道,我做错了什么?这种行为不可能吗?或者它是Google Chrome / webkit中的错误?任何解决方法?
代码示例:
的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>
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>
答案 0 :(得分:2)
我发现了一种修复它的ungentle方法。 在我的parentPage中包含域“a.b.com”:
<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>
在我的“c.d.com”中:
<iframe id="SubOBUI" name="SubOBUI" src="a.b.com/demo.jpg"
onload="someMethodThatShouldBeExecutedWhileUnload"></iframe>
<script>
var someMethodThatShouldBeExecutedWhileUnload : function() {
alert(1);
}
</script>
试一试!
答案 1 :(得分:2)
现在已修复。 See Ticket.
答案 2 :(得分:1)
答案 3 :(得分:1)
替代方法可能是在文档级别处理iframe链接中的click事件,或者预处理iframe页面并更改链接以执行自定义JS处理程序。然后根据您的业务规则禁止点击事件的传播。