之前曾经有过这样的问题,但是,据我记得,当时的问题并不令人满意^^
如何使用Javascript注册窗口或制表符关闭事件?我已经尝试过body.onclose和body.onunload,以及其他几十个我自己编写的名字,并认为它们可能存在,但没有一个有效,或者,如果有的话,它只会在之后解雇窗口或标签已关闭。
问题: 在窗口或标签关闭之前是否有任何方式注册此类事件?它甚至不需要与所有浏览器兼容,只要它适用于Firefox。
答案 0 :(得分:20)
window.onbeforeunload
= …;
。
答案 1 :(得分:8)
window.onbeforeunload = function (e) {
var e = e || window.event;
// For IE and Firefox
if (e) {
e.returnValue = 'Any string';
}
// For Safari
return 'Any string';
};
答案 2 :(得分:1)
我们没有Onclose,但我们有OnbeforeUnload。即使我正在寻找相同的活动,但没有运气。
答案 3 :(得分:0)
Unload和beforeUnload对“页面缓存”(也称为“后向缓存”)有负面影响。这是一个特殊的缓存,当您离开页面时会保留一些额外的状态,以便在您“后退”(或取消关闭选项卡)时可以无缝地重新调整它。如果你曾经想过为什么某些表单字段会在你点击后面保留它们的内容而有些则不然 - 这通常是部分原因。
您应该查看Firefox中的“pageshow”和“pagehide”事件 WebKit。 IE没有等效的页面缓存,因此在该环境中,您可以在使用前/卸载时使用。尽管Opera's early concerns,网页显示和网页隐藏已进入HTML5 Spec