Internet Explorer 7/8 поддержка нормальной передачи событий, нет необходимости в window.event? - PullRequest
2 голосов
/ 21 октября 2010

Общеизвестно, что Internet Explorer не поддерживает передачу событий в функции-обработчики событий, подобные этой:

function clickHandler(e) {
  // e is undefined in IE
  e = e || window.event;
{

Сегодня, к моему удивлению, я обнаружил, что на самом деле это так.Я забыл сделать этот трюк "e = e || window.event" в одной из моих функций, но он работал в IE8!

Я провел несколько тестов с помощью инструментов разработчика IE, объект e был полностью определени это было так даже в режиме IE7.

Мой вопрос, должен ли я полностью отбросить window.event, так как мне не нужны версии IE до 8?

1 Ответ

2 голосов
/ 21 октября 2010

Если вы назначите обработчик событий, используя свойство DOM0, вам все равно понадобится бит e = e || window.event;, и вы получите ошибку, если попытаетесь получить доступ к свойству e:

document.onclick = function(e) {
    e.cancelBubble = true; // Error
};

Если вы используете attachEvent, тогда вы правы, параметр события предоставляется функции слушателя:

document.attachEvent("onclick", function(e) {
    e.cancelBubble = true; // No error
});
...