Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.09.2007, 13:42
Аватар для Phoenix
Профессор
Отправить личное сообщение для Phoenix Посмотреть профиль Найти все сообщения от Phoenix
 
Регистрация: 24.09.2007
Сообщений: 165

Определить нажатую кнопку мыши.
Привет всем. Вопрос ужасно банален и смешон. Но я перерыл пол интернета, не нашел нормальный ответ на него...

Для определения нажатия кнопки есть событие event.button. Но на сей раз выделились Опера и ФФ, они его полностью игнорируют...

Как можно сделать кросбраузерную проверку на события мыши? Мне нужно реализовать перетаскивание слоя, при зажатой левой кнопке.
__________________
После каждой девятки все снова с нуля,
Все снова с нуля, но не сначала...
Ответить с цитированием
  #2 (permalink)  
Старый 30.09.2007, 21:33
Аватар для Илья Кантор
Администратор
Отправить личное сообщение для Илья Кантор Посмотреть профиль Найти все сообщения от Илья Кантор
 
Регистрация: 25.05.2007
Сообщений: 1,221

Да просто по-разному устроены события там.

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");
Ответить с цитированием
  #3 (permalink)  
Старый 30.09.2007, 22:38
Аватар для Phoenix
Профессор
Отправить личное сообщение для Phoenix Посмотреть профиль Найти все сообщения от Phoenix
 
Регистрация: 24.09.2007
Сообщений: 165

Я это читал... всеравно не верно! в IE все просто, там значение 1 принемает левая кнопка, в опере не могу найти такое значение. В ФФ вообще не могу найти значение... (event is not defined).

При onClick конечно все работает! но мне надо это определять на onMouseMove... А вот с ним уже замарочки начинаются
__________________
После каждой девятки все снова с нуля,
Все снова с нуля, но не сначала...
Ответить с цитированием
  #4 (permalink)  
Старый 01.10.2007, 00:14
Аватар для Илья Кантор
Администратор
Отправить личное сообщение для Илья Кантор Посмотреть профиль Найти все сообщения от Илья Кантор
 
Регистрация: 25.05.2007
Сообщений: 1,221

Какая нафиг кнопка на mousemove ? Это же перемещение, а не нажатие.
Ответить с цитированием
  #5 (permalink)  
Старый 01.10.2007, 10:04
Аватар для Phoenix
Профессор
Отправить личное сообщение для Phoenix Посмотреть профиль Найти все сообщения от Phoenix
 
Регистрация: 24.09.2007
Сообщений: 165

Ну да, но мне надо определить какая в этот момент нажата кнопка, можно иначе, на onMouseDown передать глобальной переменно значение 1 допустим. А при перемещении(onmousemove) проверять значение, если 1, то перетаскивать, если 0, то игнорировать. На onMouseUp поставить этой переменной 0.

Но имхо, это не оптимальный выход.
__________________
После каждой девятки все снова с нуля,
Все снова с нуля, но не сначала...
Ответить с цитированием
  #6 (permalink)  
Старый 01.10.2007, 10:43
Аватар для Phoenix
Профессор
Отправить личное сообщение для Phoenix Посмотреть профиль Найти все сообщения от Phoenix
 
Регистрация: 24.09.2007
Сообщений: 165

И еще...

/* All others */
       button= (event.which < 2) ? "LEFT" :
                 ((event.which == 2) ? "MIDDLE" : "RIGHT");


В ФФ всеравно не работает, никакого ответа нет
__________________
После каждой девятки все снова с нуля,
Все снова с нуля, но не сначала...
Ответить с цитированием
  #7 (permalink)  
Старый 01.10.2007, 14:48
Аватар для Илья Кантор
Администратор
Отправить личное сообщение для Илья Кантор Посмотреть профиль Найти все сообщения от Илья Кантор
 
Регистрация: 25.05.2007
Сообщений: 1,221

Код проверен на событиях клика мышой всеми кнопами.
Ответить с цитированием
  #8 (permalink)  
Старый 01.10.2007, 17:43
Аватар для Phoenix
Профессор
Отправить личное сообщение для Phoenix Посмотреть профиль Найти все сообщения от Phoenix
 
Регистрация: 24.09.2007
Сообщений: 165

Сообщение от Илья Кантор Посмотреть сообщение
Код проверен на событиях клика мышой всеми кнопами.
Ну не знаю...

попробуй такой код в ФФ:
<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)
__________________
После каждой девятки все снова с нуля,
Все снова с нуля, но не сначала...
Ответить с цитированием
  #9 (permalink)  
Старый 01.10.2007, 17:55
Аватар для Илья Кантор
Администратор
Отправить личное сообщение для Илья Кантор Посмотреть профиль Найти все сообщения от Илья Кантор
 
Регистрация: 25.05.2007
Сообщений: 1,221

Ну конечно, тебе ж нужен объект event еще.
Ответить с цитированием
  #10 (permalink)  
Старый 01.10.2007, 18:40
Аватар для Phoenix
Профессор
Отправить личное сообщение для Phoenix Посмотреть профиль Найти все сообщения от Phoenix
 
Регистрация: 24.09.2007
Сообщений: 165

А как его реализовать? если правильно понял, то он равносилен document.event?
__________________
После каждой девятки все снова с нуля,
Все снова с нуля, но не сначала...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43
Определить координаты объекта в таблице ner2000 Events/DOM/Window 2 14.06.2008 01:56