Опера захватывает события по умолчанию и каково правильное поведение? - PullRequest
1 голос
/ 01 сентября 2011

У меня был некоторый код события, который потерпел неудачу в Opera, и я сократил его до этого небольшого тестового примера .

В основном проблема в том, что обработчик событий не запускается в Opera, если не установлен третий параметр addEventListener.Значение в тестовом примере увеличивается как в Firefox, так и в Chrome при нажатии кнопки «useCapture not set» , но не в Opera.

Эта (старая) статья указывает, что Opera отличаетсячем браузеры webkit и gecko: http://my.opera.com/hallvors/blog/2006/10/12/2006-10-12-event-capture-explained. Хотя я не уверен, что из этого получится.MDN говорит, что useCapture должно по умолчанию false.

- это значение по умолчанию true в Opera, параметр просто необязательный, или что я пропускаю?Что такое правильное поведение?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

Несоответствие по сравнению с Событиями DOM уровня 3 является ошибкой и будет исправлено в Opera 12.

0 голосов
/ 02 сентября 2011

В случае сомнений обратитесь к спецификации. Оригинальная и до сих пор действующая спецификация - это события W3C DOM Level 2 . Если посмотреть на страницу привязки ECMASCript , то кажется, что параметр useCapture является обязательным, поскольку нет упоминания о его необязательности.

События уровня 3 DOM явно упоминают useCapture как необязательный , хотя я не думаю, что этот черновой вариант спецификации когда-либо получил широкое распространение в браузерах.

На соответствующей странице MDN также есть примечание:

Примечание: useCapture стал необязательным только в более поздних версиях основные браузеры; например, это не было обязательным до Firefox 6. Вы должны предоставить этот параметр для самой широкой совместимости.

Итог: всегда безопаснее передавать все три параметра, и Opera вполне может настаивать на этом.

...