/ / Додати eventListener в jae jae - javascript, Internet-Explorer, події, слухач

Додати eventListener в IE javascript - javascript, інтернет-дослідник, події, слухач

Цей код добре працює, наприклад, у Chrome, але не в Internet Explorer 8/9.

/* sitepoint.com/javascript-this-event-handlers */
function AttachEvent(element, type, handler){if (element.addEventListener){element.addEventListener(type, handler, false);}else{element.attachEvent("on"+type, handler);}}

window.addEventListener("load", function() {

//do some stuff

AttachEvent(id, "click", function_name);

}, false);

IE вже скаржиться на addEventListenerрядок. Я вважаю, що мені потрібно замість цього використовувати attachEvent. Як це зробити? Я вважаю за краще зберегти код, який працює в інших браузерах, і використовувати лише APIEvent в Internet Explorer. Як зробити цей крос-браузер сумісним?

Відповіді:

7 для відповіді № 1

IE9 робить підтримка addEventListener().

Ось як би працювала ваша існуюча функція attachEvent (і старий on* майно)

// logic to attach the event correctly in IE9
function AttachEvent(element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
}else if (element.attachEvent) {
element.attachEvent("on" + type, handler)
} else {
element["on" + type] = handler;
}
}

Потім ви встановите подію завантаження вікна ...

AttachEvent(window, "load", function() {
// ...
});

Не забувай, що event є глобальним зі старими ІЕ. Ви можете сценарій навколо цього, якщо хочете. Ви просто мали б кожну функцію викликати це callback() який буде надалі викликати надану користувачем handler() з правильними аргументами.

var callback = function(e) {
e = e || window.event;
handler.call(element, e);
};

Ви можете захопитися і спробувати нормалізувати властивості event, як от target/srcElement, але тоді ви можете розглянути наявну бібліотеку.