2009-04-29 54 views
5

在IE和FF中,我可以将事件处理程序附加到onBeforeUnload上,并通过将字符串传递给事件属性,用户将看到一个对话框,询问他是否要继续“卸载”(或者关闭窗口或导航)。当用户在Safari/Chrome中关闭窗口时,可以弹出确认对话框吗?

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

注意:我不是试图保持用户的人质。我知道这是唠叨和冷静。事实上,我的网站竭尽全力让用户自由行动,并且在他们回来时拥有一切。 但是,我在IFrame中托管了其他网站,有时这些网站决定摆脱我并接管浏览器,这正是我试图避免的。

谢谢!

+0

请注意,它通常被认为是粗鲁的disp将其他人的网站放在你自己的框架中,当Digg刚刚做到这一点时,就有巨大的哗然。 – 2009-04-29 20:12:34

+0

我知道,并感谢您的建议。但是,我们的目标确实与Digg完全不同,并且(至少我们相信)我们有充分的理由这样做,它确实提供了一些真正的功能。 – 2009-04-29 20:36:26

回答

7

这完全适用于我的Chrome和Safari浏览器:

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

当我尝试关闭该窗口,我得到的提示。

+0

嗯。这很奇怪... 我的代码在Safari中不起作用。 也许这是因为我使用Prototype的Event.observe()来附加处理程序... 反正,非常感谢!你让我的生活变得如此简单! – 2009-04-29 20:35:10

2

的StackOverflow本身使用onbeforeunload,它工作正常,我在Safari:

function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null} 
2

我检查铬,似乎以此来进行精细的工作:

<body onunload="alert('x');" onbeforeunload="test1();">