| 
 Определить нажатую кнопку мыши. Привет всем. Вопрос ужасно банален и смешон. Но я перерыл пол интернета, не нашел нормальный ответ на него... Для определения нажатия кнопки есть событие 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? | 
| 
 Попробуй объявить  function but(event){ | 
| 
 вообще перестала работать.... function pres_but(event){ 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"); return button; } //оба не работают( pres_but(); pres_but(document.event); Покажи пожалуйста правильный код работы, что то вообще понять не могу :( | 
| 
 А как ты подключаешь обработчик к элементу? | 
| 
 Вот мой код... function pres_but(){ if (event.which == null) button= (event.button < 2) ? "LEFT" : ((event.button == 4) ? "MIDDLE" : "RIGHT"); else button= (event.which < 2) ? "LEFT" : ((event.which == 2) ? "MIDDLE" : "RIGHT"); return button; } function what_but(){ if (pres_but()=="LEFT") {drag_pan=1;} } <td height='24' class='close_pan' onMouseMove='move_pan()' onMouseDown='what_but()' onMouseUp='def_pan()'> //с function pres_but(event) вообще не работает(я неверно похоже объявляю). p.s. Мой код работает в Опере и ИЕ. В ФФ не хочет( | 
| 
 Пока делеал перетаскивание, возникла еще одна проблема. При перетаскивании, текст который находится под курсором выделяется. Как можно это выделение отменить(запретить), что бы более красиво смотрелось перетаскивание. | 
| 
 onMouseMove='move_pan()' onMouseDown='what_but()' onMouseUp='def_pan()'> вот это замени на onMouseMove='move_pan(event)' onMouseDown='what_but(event)' onMouseUp='def_pan(event)'> и вот это 
function what_but(event){
   if (pres_but(event)=="LEFT") {drag_pan=1;}
}
 | 
| 
 Спасибо большое, разобрался! У меня еще в коде были ошибки с Event, изменил, теперь работает все отлично! | 
| 
 Возникла еще одна проблемка в Опере. Когда идет обработка события onMouseMove(я его на body повесил, что бы более правильнее работало перемещение). В Опере выделяется текст под курсором, в ИЕ и ФФ этого нет. Как можно заблокировать выделение или сбросить? а то некрасиво смотрится :( | 
| 
 Вот функция, тока она похоже в Опере не пашет. Я сам оперой не занимаюсь =( 
setSelectable = function(/*Node|String*/node, /*Boolean*/selectable){
                // summary: enable or disable selection on a node
                node = dojo.byId(node);
                if(dojo.isMozilla){
                        node.style.MozUserSelect = (selectable) ? "" : "none";
                }else if(dojo.isKhtml){
                        node.style.KhtmlUserSelect = (selectable) ? "auto" : "none";
                }else if(dojo.isIE){
                        node.unselectable = (selectable) ? "" : "on";
                        dojo.query("*", node).forEach(function(descendant){
                                descendant.unselectable = (selectable) ? "" : "on";
                        });
                }
                //FIXME: else?  Opera?
        };
 | 
| Часовой пояс GMT +3, время: 08:56. |