我有一个卸载和beforeunload事件定义为:
window.onunload = (function () {
alert("In unload); } ());
window.beforeonunload = (function () {
alert("In unload); } ());
当页面首次加载或回发后(之前)加载时,警报会显示。它不应该。这种情况发生在Firefox& Chrome但不在IE中。为什么? IE似乎有正确的行为。
答案 0 :(得分:1)
好的,首先,你在alert
上缺少引号,所以它不应该提醒 。
要解决您的实际问题,您需要调用该函数,而不仅仅是声明它。
(function (){
alert();
}())
(你也写beforeonunload
。这是不正确的。它应该是onbeforeunload
)
创建一个匿名函数并立即调用它。它们通常在JavaScript中称为IIFE。要添加事件处理程序,您必须传递对函数的引用。所以这里正确的方法是:
window.onunload = function () {
alert("In unload");
};
window.onbeforeunload = function () {
alert("In unload");
};
在您的情况下,分配给该事件的内容为undefined
,因为您的匿名函数不会return
。如果return
编辑了一个函数,它将完美地工作。
Chrome会阻止onunload和onbeforeunload上的警报,因为这些通常是垃圾网站试图阻止用户离开。然而,console.log
完美无缺。检查demo。打开控制台,单击“运行”,然后单击“运行”时,将刷新代码,重新加载框架,并在卸载页面之前触发事件,然后再次加载。