Я использую attachEvent какое-то время, но кажется, что IE больше не поддерживает это?
window.attachEvent("onload",Start_Wysiwyg);
window.attachEvent("onscroll",ScrollEditBar,false);
Есть ли у кого-нибудь решение этой проблемы?
Я использую attachEvent какое-то время, но кажется, что IE больше не поддерживает это?
window.attachEvent("onload",Start_Wysiwyg);
window.attachEvent("onscroll",ScrollEditBar,false);
Есть ли у кого-нибудь решение этой проблемы?
.attachEvent()
устарел в IE9 + и был удален в IE11.
Стандарт .addEventListener()
(Документы MSDN). В документах MDN есть раздел о совместимости.
Вы можете просто запустить некоторый код проверки функций, чтобы проверить, существуют ли поддерживаемые функции:
if (window.addEventListener) {
// Check for addEventListener first, since IE9/10 have both,
// but you should use the standard over the deprecated IE-specific one
window.addEventListener('click', myFunc);
} else if (window.attachEvent) {
window.attachEvent('onclick', myFunc);
}
Если вам нужно подключить много прослушивателей событий, вам может понадобиться просто кэшировать желаемый метод вставки получателя в переменной и использовать эту переменную для прикрепления ваших событий по всему вашему коду, вместо того, чтобы иметь вышеуказанную проверку для каждого отдельного прослушиватель событий:
var addListener = function(){}; // Default to no-op function
if (window.addEventListener) {
addListener = window.addEventListener;
} else if (window.attachEvent) {
addListener = function(eventType, listener, useCapture) {
// attachEvent wants 'oneventType' instead of 'eventType'
window.attachEvent('on'+eventType, listener, useCapture);
};
}
// Now you can add listeners with a browser-agnostic function call!
addListener('click', myFunc);
addListener('hover', myOtherFunc);
Вы можете прочитать больше в повторяющемся вопросе, связанном с @MartyIX, в комментарии к вашему вопросу. В ответах/комментариях есть другие нюансы и методы, такие как IE9, требующие <!DOCTYPE html>
, чтобы использовать .addEventListener()
.