2011-09-01 38 views
1

我有一些事件代碼在Opera中失敗,我已將它剝離爲this small testcaseOpera是否默認捕獲事件,以及正確的行爲是什麼?

基本上問題是如果沒有設置第三個參數addEventListener,事件處理程序不能在Opera中運行。當「useCapture not set」 -button被單擊時,Firefox中和Chrome中的值增加,但Opera中沒有。

此(舊)文章表示Opera不同於webkit &壁虎瀏覽器: http://my.opera.com/hallvors/blog/2006/10/12/2006-10-12-event-capture-explained。我不知道該怎麼做。 MDN表示useCapture應該默認爲false

是Opera中默認的true,參數根本不是可選的,或者我缺少什麼?什麼是正確的行爲?

回答

0

如果有疑問,請參閱規格。原來仍然是當前的規範是W3C的DOM Level 2 Events。查看ECMASCript binding page,看起來好像useCapture參數是必需的,因爲沒有提及它是可選的。

DOM Level 3事件explicitly mentions useCapture as being optional,雖然我不認爲這個草案規範曾經在瀏覽器中被廣泛採用。

relevant MDN page也有這樣的提示:

注:僅將useCapture在較新版本的 主流瀏覽器成爲可選項;例如,在Firefox 6之前它不是可選的。 您應該提供該參數以實現最廣泛的兼容性。

底線:總是傳遞所有三個參數是最安全的,Opera完全有權堅持它。

+0

我想我沒有看全MDN頁面不夠徹底。謝謝你的明確答案。 –

相關問題