#javascript #events #button #onclick
#javascript #Мероприятия #кнопка #onclick
Вопрос:
возможно ли проверить e.button «напрямую» в теге onclick?
Например
<div onclick="if(e.button == 1) { alert(e.button); }"></div>
Заранее спасибо!
Питер
Ответ №1:
ДА. Это выглядит как :
<div onclick="javascript:var e = window.event; if(e.button == 1) { alert(e.button); }"></div>
Комментарии:
1. Спасибо за быстрый ответ! Кстати. Работало ли это в каждом «новом» браузере?
2. (a)
javascript
Метка не нужна и сбивает с толку. (b) Это не будет работать в Firefox (и я удивлен, что это работает в Chrome).3. @Heandel: Если вы не объясните, что делает
javascript
метка, вы собьете с толку новичков, которые не понимают, что это такое, и думают, что это необходимо иметь. В браузерах, совместимых с W3C, объект event передается в качестве параметра обработчику события и недоступен черезwindow.event
(это особенность IE).4. Верно, это не сработало бы в ff. Решение от FelixKling работает.
Ответ №2:
Содержимое, которое вы помещаете в onclick
, будет обернуто в функцию, поэтому теоретически вы можете поместить туда любой JavaScript:
<div onclick="var e = event || window.event; if(e.button == 1) { alert(e.button); }"></div>
Но это не считается хорошей практикой, поскольку его сложно поддерживать и в нем смешиваются HTML и JavaScript. Лучше прикрепить функцию с помощью JavaScript:
// given your HTML is
<div id="myDIV"></div>
// you can do:
document.getElementById('myDIV').onclick = function(event) {
var e = event || window.event;
if(e.button == 1) {
alert(e.button);
}
}
quirksmode.org предоставляет всю необходимую информацию о JavaScript и событиях.