#javascript #onclick
#javascript #onclick
Вопрос:
мне нужно решение, отличное от Jquery middleclick, для всех новых браузеров. Моя идея заключалась в том, чтобы использовать onmiddleclick … но этот код не работает.
Надеюсь, кто-нибудь сможет помочь.
HTML / JS код
<div id="test" onmiddleclick="alert('middle');" ondblclick="alert('dbl');" >
CLICK HERE
</div>
Пример
http://jsfiddle.net/392BK /
Заранее спасибо!
Питер
Ответ №1:
Javascript:
<script type="text/javascript">
function whichButton(e) {
if (!e) var e = window.event;
switch (e.which) {
case 1: alert("Left"); break;
case 2: alert("Middle"); break;
case 3: alert("Right"); break;
}
}
</script>
HTML:
<div id="test" onmouseup="whichButton()">Click Me</div>
Прочтите эту страницу QuirksMode для получения дополнительной информации о свойствах события.
Если возможно, определенно стоит использовать jQuery для подобных вещей. Кроссбраузерная совместимость для щелчков мышью оставляет желать лучшего, и вам понадобится что-то более похожее на эту демонстрацию, чтобы обеспечить поддержку во всех браузерах.
Комментарии:
1. @Питер: Да, это действительно немного кошмарно. Браузеры обрабатывают
which
иbutton
по-разному, поэтому вам нужно будет использовать их в коде (см. страницу QuirksMode ). Есть ли причина, по которой вы не можете использовать jQuery? Как бы я ни ругал ответ @netbrain, jQuery действительно вступает в свои права при работе с такими межбраузерными несоответствиями, как это.2. @Peter: Без jQuery вы будете смотреть на что-то немного более запутанное, вроде этого: jsfiddle .
Ответ №2:
Обновлен код из «Town», он исправит ошибку в Firefox и, возможно, других браузерах с сообщением «e не определено».
В HTML вы должны отправлять параметр события следующим образом:
<div id="test" onmouseup="whichButton(event)">Click Me</div>
Надеюсь, это поможет вам!
Комментарии:
1. Это не будет работать в IE, поскольку IE использует
event.button
вместоevent.which
. Смотрите ссылку в моем ответе.
Ответ №3:
Использование onclick
и обнаружение щелчков было бы хорошей альтернативой.
Проверьте это
Ответ №4:
Используйте onmousedown
событие. Объект event имеет button
свойство, которое содержит битовую маску для нажатых кнопок. Значение 4 означает, что нажата только средняя кнопка.
Комментарии:
1. Только в IE . В противном случае это
1
для среднего щелчка.
Ответ №5:
Вот так!
$().ready(function(){
$("#test").mousedown(function(b){
if(b.which==1)alert('Left Mouse Button Clicked');
else if(b.which==2)alert('Middle Mouse Button Clicked');
else if(b.which==3)alert('Right Mouse Button Clicked');
});
})
Редактировать:
Мой плохой, но типы событий все еще применяются.
Комментарии:
1. Чтобы не слишком усугублять актуальность, но
$().ready()
это не рекомендуется в соответствии с документацией , хотя и не указано конкретно, почему! Если вам нужно сокращение, я бы использовал$(handler)
.