Во-первых, вам нужно отбросить часть «on» для addEventListener()
. Во-вторых, имя события должно быть в нижнем регистре. В-третьих, вы пропустили третий параметр, который является логическим значением, указывающим, обрабатывать ли событие в фазе захвата, а не в фазе пузырьков (если сомневаетесь, используйте false
).
Другая проблема, которую вам необходимо учитывать, заключается в том, что IE <= 8 не поддерживает <code>addEventListener(), поэтому вам нужно включить специфический для IE запасной вариант, используя собственный метод attachEvent()
.
Со всем этим ваш пример становится:
var li = document.getElementById('first');
if (typeof li.addEventListener != "undefined") {
li.addEventListener('mouseover', function() {
alert('ok');
}, false);
} else if (typeof li.attachEvent != "undefined") {
li.attachEvent('onmouseover', function() {
alert('ok');
});
}
Самым простым кросс-браузерным решением является так называемый метод DOM0, использующий свойство элемента onmouseover
. Однако это имеет тот недостаток, что допускается использование только одного прослушивателя событий на событие для каждого элемента, и поэтому он потенциально может быть переопределен другим кодом.
li.onmouseover = function() {
alert('ok');
};