Доброго времени суток дорогие форумчане. http://cssdeck.com/labs/auemvbce Код (PHP): document.getElementById('ololo').addEventListener('contextmenu',function(){ alert('lol'); return false; },false); document.getElementById('ololo').oncontextmenu=function(){ alert('lol'); return false; } Такой вопрос: что я делаю в первом варианте обработчика неправильно? Первый вариант не работает, а точнее не отменяется действие по умолчанию. Во втором всё ок.
Пробуйте так: Код (PHP): document.getElementById('ololo').addEventListener('contextmenu', function (e) { e.preventDefault(); alert('lol'); }, false);
Никакой магии )) В данном случае: e == event (объект события) Кстати, для старых ослов этот метод не доступен. Можно использовать такую универсальную конструкцию: Код (PHP): var preventDefault = function() { var e = this.originalEvent; if (!e) return; // Если preventDefault доступен (для нормальных браузеров и осла 9+) if (e.preventDefault) { e.preventDefault(); // Для ослов ниже девятой версии } else { e.returnValue = false; } } Теперь, можно использовать и для старых ослов. Но не забываем, что IE<9, так же не дружат с addEventListener. У них свой обработчик событий - attachEvent, но это уже совсем другая история...
Интересная тема А если не брать в учет IE, то шаманства ненужны? хватит просто function(e){? А то по поводу этого недобраузера у меня смутные сомнения :/