Событие onclick кнопки (жестко запрограммированное)

#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 и событиях.