простой код с простым js: addEventListener не отвечает - PullRequest
0 голосов
/ 26 апреля 2011


я просто хотел сделать тест, я привык работать на jQuery, а не на «обычном» javascript, я пытался связать это событие, но у меня нет ответа от события, я просто создал ссылку и скрипт тег в HTML-код, с:

var li = document.getElementById ('first');
li.addEventListener ('onMouseover', function () {
предупреждение ( 'ОК');
})

Подскажите, пожалуйста, что с ним не так? я не вижу ошибки.
Спасибо

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Во-первых, вам нужно отбросить часть «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');
};
1 голос
/ 26 апреля 2011

Вы можете назначить функцию-обработчик непосредственно свойству onmouseover выбранного элемента в DOM:

var lis = document.getElementById('first');
lis.onmouseover = function() {
    alert('yo');
};

На jsFiddle: http://jsfiddle.net/entropo/YMGAy/

Документы:

Edit:
Здесь тоже используется addEventListener ...

li = document.getElementById('first');
li.addEventListener('mouseover', function(e) {
    alert('ok');
}, false);

http://jsfiddle.net/entropo/7FvZ7/
Вы пропустили последний аргумент addEventListener (для useCapture)

...