在符合W3C標准的瀏覽器里,可以使用addEventListener方法來添加事件。
當不需要為一個事件添加多個處理函數的時候,可以簡單的使用onXXX=function(){}的方式來添加事件處理函數,但是當需要為同一事件添加多次處理函數(handler)時,就要用到addEventListener
一般也碰不到什么問題,然而今天在使用onbeforeunload的時候發現,兩種方式有一點點區別,區別在於返回值的處理。
直接用
window.onbeforeunload=function(){return '確定要離開嗎?'}
這種方式,沒有問題。刷新或者跳轉都能給出正確提示,但是使用addEventListerner時,就沒有用了,如下:
function a(){ return '要離開嗎?'; } window.addEventListener('beforeunload',a,true)
並沒有任何效果,頁面還是照樣刷新或者離開了。在Google上查了一下,結果得到是這樣的,應該使用event.returnValue來指明要提示的內容,代碼修改完后如下:
function beforeUnloadHandler(event){ event.returnValue = "要離開嗎?" } window.addEventListener('beforeunload',beforeUnloadHandler,true);
這樣就可以了,並且根據標准,第一種方式,也應該使用event.returnValue的方式來給出提示。
可以參考這個文章:https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload
