Определить нажатую кнопку мыши.
Привет всем. Вопрос ужасно банален и смешон. Но я перерыл пол интернета, не нашел нормальный ответ на него...
Для определения нажатия кнопки есть событие event.button. Но на сей раз выделились Опера и ФФ, они его полностью игнорируют... Как можно сделать кросбраузерную проверку на события мыши? Мне нужно реализовать перетаскивание слоя, при зажатой левой кнопке. |
Да просто по-разному устроены события там.
if (event.which == null)
/* IE case */
button= (event.button < 2) ? "LEFT" :
((event.button == 4) ? "MIDDLE" : "RIGHT");
else
/* All others */
button= (event.which < 2) ? "LEFT" :
((event.which == 2) ? "MIDDLE" : "RIGHT");
|
Я это читал... всеравно не верно! в IE все просто, там значение 1 принемает левая кнопка, в опере не могу найти такое значение. В ФФ вообще не могу найти значение... (event is not defined).
При onClick конечно все работает! но мне надо это определять на onMouseMove... А вот с ним уже замарочки начинаются :( |
Какая нафиг кнопка на mousemove ? Это же перемещение, а не нажатие.
|
Ну да, но мне надо определить какая в этот момент нажата кнопка, можно иначе, на onMouseDown передать глобальной переменно значение 1 допустим. А при перемещении(onmousemove) проверять значение, если 1, то перетаскивать, если 0, то игнорировать. На onMouseUp поставить этой переменной 0.
Но имхо, это не оптимальный выход. :) |
И еще...
/* All others */
button= (event.which < 2) ? "LEFT" :
((event.which == 2) ? "MIDDLE" : "RIGHT");
В ФФ всеравно не работает, никакого ответа нет :( |
Код проверен на событиях клика мышой всеми кнопами.
|
Цитата:
попробуй такой код в ФФ:
<script>
function but(){
if (event.which == null)
/* IE case */
button= (event.button < 2) ? "LEFT" :
((event.button == 4) ? "MIDDLE" : "RIGHT");
else
/* All others */
button= (event.which < 2) ? "LEFT" :
((event.which == 2) ? "MIDDLE" : "RIGHT");
alert(button);
// return button;
}
</script>
<input type="button" onCLick="but()" value="Нажми"/>
У меня ФФ дебагер выдает такую ошибку: event is not defined if (event.which == null) |
Ну конечно, тебе ж нужен объект event еще.
|
А как его реализовать? если правильно понял, то он равносилен document.event?
|
| Часовой пояс GMT +3, время: 00:32. |