Я установил флажок динамически. Я использовал addEventListener
для вызова функции при щелчке по флажку, которая работает в Google Chrome и Firefox, но не работает в Internet Explorer 8 . Это мой код:
var _checkbox = document.createElement("input");
_checkbox.addEventListener("click", setCheckedValues, false);
setCheckedValues
это мой обработчик событий.
Вы должны использовать
attachEvent
в версиях IE до IE9. Определите,addEventListener
определеноattachEvent
ли оно, и используйте, если нет:Обратите внимание, что IE11 удалит
attachEvent
.Смотрите также:
element.addEventListener
устаревший Internet Explorer и attachEventисточник
Это тоже простое кроссбраузерное решение:
Вместо «щелкнуть» конечно может быть любое событие.
источник
addEventListener
Третий аргумент в любом случае необязателен, так что это может быть хорошим решением, и оно лучше, чем ветви if-else. Но в данном случае_checkbox
это целевой элемент, а неwindow
. :) Так что, возможно, вы могли бы создать функцию, в которой цель события является другим аргументом.addEventListener
вызовов целевых элементов события - см. Эту тему: stackoverflow.com/questions/1007340/… . Таким образом, дляwindow
объекта он работает правильно, но не работает для других узлов внутри документа. Таким образом, ваш предложенный псевдоним НЕ подходит для случая, упомянутого в исходном вопросе! Каким будет обходной путь?IE не поддерживает
addEventListener
до версии 9, поэтому вам нужно использоватьattachEvent
, вот пример:источник
Может быть, это проще (и имеет большую производительность), если вы делегируете обработку событий другому элементу, например вашей таблице
таким образом у вас будет только один обработчик событий, и это будет работать также для вновь добавленных элементов. Для этого требуется jQuery> = 1.7
В противном случае используйте delegate ()
источник
Вы можете использовать приведенную ниже функцию addEvent () для добавления событий для большинства вещей, но обратите внимание, что для XMLHttpRequest
if (el.attachEvent)
произойдет сбой в IE8, потому что он не поддерживает,XMLHttpRequest.attachEvent()
поэтому вы должны использоватьXMLHttpRequest.onload = function() {}
вместо этого.источник
Я выбрал быстрый Polyfill, основываясь на приведенных выше ответах:
Конечно, как и ответы выше, это не гарантирует, что оно
window.attachEvent
существует, что может быть или не быть проблемой.источник
Если вы используете jQuery, вы можете написать:
источник
источник