14
window.addEventListener("onbeforeunload",function() {return "are you sure?"}); 

^这似乎并没有工作...在所有...该网页将只需要关闭不显示确认对话框......的addEventListener不onbeforeunload工作

我意识到......

window.onbeforeunload = function() {return "are you sure?"} 

会工作,但我想添加到功能(例如添加许多事件监听器到“onbeforeunload”函数),而不是完全重写函数!

回答

20

onbeforeunload中删除on

此外,请注意,addEventListener将不适用于旧的IE浏览器和其他浏览器。如果你想要一致的事件绑定使用库。

+0

哦,lollllll,我知道这会是一些愚蠢的事 - ---非常感谢你! – zconnelly13

+2

以下是addEvent的跨浏览器解决方案:'function addEvent(evt,fn,useCapture){if(this.addEventListener){this.addEventListener(evt,fn,useCapture); return true;} else if(this.attachEvent ){var r = this.attachEvent('on'+ evt,fn); return r;} else this ['on'+ evt] = fn;} Object.prototype.addEvent = addEvent;'(像这样写函数:object.addEvent(event,function,useCapture);)。 – Mageek

+2

似乎不能在最新的FF - 14.0.1中工作 – Marcin

13

在Mozila Developer Network API reference for beforeunload event有一个“几乎跨浏览器的工作示例”。使用他们的代码。

window.addEventListener("beforeunload", function (e) { 
    var confirmationMessage = "\o/"; 

    (e || window.event).returnValue = confirmationMessage;  //Gecko + IE 
    return confirmationMessage;        //Webkit, Safari, Chrome etc. 
}); 
+0

无论我采用哪种方式,我都无法自定义消息 – toddmo

+0

@toddmo现在,浏览器不显示自定义消息。这是一个安全/ UX功能。请参阅https://www.chromestatus.com/feature/5349061406228480。或者那里的链接MDN页面。这是写完答案后出现的。 – user7610

+0

谢谢,我终于也看到了:) – toddmo

0

有没有前缀on事件侦听但它的适用,或者我可以说是必要的事件处理器

所以,只要记住,

事件处理器= 前缀上

E ventListeners = 前缀关