6

在 IE 和 FF 中,我可以将事件处理程序附加到 onBeforeUnload,并通过将字符串传递给事件的属性,用户将看到一个对话框,询问他是否要继续“卸载”(关闭窗口或导航离开)。

Safari 和 Chrome 不支持 onBeforeUnload,onUnload 似乎为时已晚。有没有办法在 Safari/Chrome 中复制相同的功能?

注意:我不是想把用户当作人质。我知道这是唠叨和不酷。事实上,我的网站竭尽全力让用户自由活动,并在他们回来时将所有东西都放在原处。但是,我在 IFrame 中托管其他网站,有时这些网站决定摆脱我并接管浏览器,这是我试图避免的。

谢谢!

4

4 回答 4

7

这在 Chrome 和 Safari 中都非常适合我:

<html><body><p>Test</p>
<script>window.onbeforeunload = function() { return "Sure?"; }</script>
</body></html>

当我尝试关闭窗口时,我得到了提示。

于 2009-04-29T20:00:40.413 回答
2

StackOverflow 本身使用onbeforeunload,它在 Safari 中对我来说很好用:

function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null}
于 2009-04-29T20:23:20.610 回答
2

我在 chrome 中检查了它,使用它似乎工作正常:

<body onunload="alert('x');" onbeforeunload="test1();">
于 2010-12-09T14:02:20.333 回答
1

这个问题在另一个较新的 StackOverFlow 问题中有更详细的介绍: Setting onbeforeunload on body element in Chrome and IE using jQuery

于 2011-10-18T18:18:42.147 回答