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 = 前綴關