我用下面(純粹是出於測試目的)代碼:一些關於jQuery的
$(window).bind('unload', function() {alert('unload!')});
$(window).unload(function() {alert(".unload()")});
而且我有兩個問題:
爲什麼確實有效 - 即爲什麼我會看到兩條消息?我在某處讀到將兩個事件監聽器附加到相同的DOM對象時不起作用;第二個和更多的聽衆被忽略。
爲什麼Firefox在一個標準的類似系統的消息框中顯示這兩個消息,而在使用頁面的過程中觸發的所有其他消息(也是警報)總是顯示在這個醜陋,無標題,煩人的,消息框的東西?
正如我在評論中寫道,以this question,你真的東西,那阻斷
unload
alert()
(由鍍鉻/ WebKit的)是一個好主意?使用console.log替代警報(就像這裏所建議的那樣)並不會給你帶來太多有用的效果,因爲在刷新頁面或導航到另一個控制檯之後,控制檯(至少在Chrome中)正在被清除。你可以看到你的消息的痕跡,在它們真正消失之前的幾個毫秒內寫入,所以我寧願覺得它沒用。禁用卸載警報不是最好的主意。很難做一些嚴肅的測試,通過顯示自己的「煩人的」消息,而不是使用警報(jQuery UI,某些div等),「糟糕的」頁面可以輕鬆實現解決方法。
這些問題純粹是爲了滿足我的飢餓知道所有的答案! :]所以,不要認真對待它(比如做一些額外的測試,小提琴例子等)。只是,寫下你對此的瞭解或感受。
當然,該瀏覽器如何顯示消息框超出頁面的代碼控制的。這對我來說很明顯。我問,因爲我不喜歡Firefox,它是新的消息框,所以我很好奇,爲什麼他們已經恢復顯示「正常」的消息框。 – trejder 2012-07-17 14:43:41
你必須問一個Firefox開發者:-) – Pointy 2012-07-17 14:44:19
嗯...... [MDN](https://developer.mozilla.org/en/DOM/element。addEventListener)說(在「多個相同的事件監聽器」中):「如果多個相同的EventListener在同一個EventTarget上使用相同的參數註冊,則丟棄重複的實例」。 – trejder 2012-07-17 14:44:35