当用户在Safari/Chrome中关闭窗口时,我是否可以弹出确认对话框?

当用户在Safari/Chrome中关闭窗口时,我是否可以弹出确认对话框?,safari,google-chrome,onbeforeunload,onunload,Safari,Google Chrome,Onbeforeunload,Onunload,在IE和FF中,我可以将事件处理程序附加到onBeforeUnload,通过向事件的属性传递字符串,用户将看到一个对话框,询问他是否要继续“卸载”(关闭窗口或导航离开) Safari和Chrome不支持onBeforeUnload,而onUnload似乎为时已晚。 有没有办法在Safari/Chrome中复制相同的功能 注意:我不是想把用户当作人质。我知道这很烦人,很不酷。事实上,我的网站竭尽全力让用户自由活动,当他们回来时,一切都在原位。 然而,我在iFrame中托管其他网站,有时这些网站决定

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

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

注意:我不是想把用户当作人质。我知道这很烦人,很不酷。事实上,我的网站竭尽全力让用户自由活动,当他们回来时,一切都在原位。 然而,我在iFrame中托管其他网站,有时这些网站决定摆脱我,接管浏览器,这正是我试图避免的


谢谢

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

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

window.onbeforeunload=函数(){返回“确定?”;}

当我试图关闭窗口时,会得到提示。

StackOverflow本身使用了
onbeforeunload
,它在Safari中运行良好:

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

我在chrome中进行了检查,它似乎可以正常工作:

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

这个问题在另一个较新的StackOverFlow问题中有更详细的介绍:

请注意,在您自己的框架中显示他人的网站通常被认为是不礼貌的,Digg最近这样做时引起了巨大的抗议。我知道,谢谢您的建议。然而,我们确实有一个与Digg非常不同的目标,而且(我们相信至少)我们有一个很好的理由这样做,它确实提供了一些真正的功能。真奇怪。。。我的代码在Safari中不起作用。可能是因为我使用Prototype的Event.observe()来附加处理程序。。。无论如何,非常感谢!你让我的生活轻松多了@RichieHindle使用此方法关闭子窗口时,我是否可以调用父窗口进行刷新?或者我可以让它调用另一个js函数来代替确认吗?@raym0nd:onbeforeunload处理程序对它的功能有很多限制。我不太清楚它们是什么,而且它们可能会因浏览器而异。您应该测试它,但我怀疑它是否在任何地方都能工作,无论是现在还是将来。在Chrome中,简单的“function(){alert('Sure?');}”将不起作用。最初的问题是,
onUnload似乎太晚了。