Определить кнопку мыши для FireFox в Javascript - PullRequest
2 голосов
/ 08 июля 2010

Как лучше всего определить, какая кнопка была нажата в DIV в FireFox с использованием JavaScript?

Ответы [ 2 ]

3 голосов
/ 08 июля 2010

Есть два свойства для определения, какая кнопка мыши была нажата: какая и какая кнопка.Обратите внимание, что эти свойства не всегда работают с событием клика.Для безопасного обнаружения кнопки мыши вы должны использовать события mousedown или mouseup.

, что является старым свойством Netscape.Левая кнопка дает значение 1, средняя кнопка (колесо мыши) дает 2, правая кнопка дает 3. Нет проблем, кроме ее скудной поддержки (и того факта, что она также используется для определения ключа).

Кнопка сейчасбыл испорчен до неузнаваемости.Согласно W3C его значения должны быть:

* Left button – 0
* Middle button – 1
* Right button – 2

Согласно Microsoft, его значения должны быть:

* Left button – 1
* Middle button – 4
* Right button – 2

Без сомнения, модель Microsoft лучше, чем W3C.0 должно означать «ни одна кнопка не нажата», все остальное нелогично.

Кроме того, только в модели модели Microsoft можно комбинировать значения кнопок, так что 5 будет означать «левую и среднюю кнопку».Даже Explorer 6 на самом деле не поддерживает это, но в модели W3C такая комбинация теоретически невозможна: вы никогда не узнаете, была ли нажата и левая кнопка.

По моему мнению, W3C допустил несколько серьезных ошибок в определениикнопка.Щелкните правой кнопкой мыши

К счастью, вы чаще всего хотите знать, была ли нажата правая кнопка.Поскольку W3C и Microsoft случайно договорились об этом и дали кнопке значение 2, вы все равно можете обнаружить щелчок правой кнопкой мыши.

function doSomething(e) {
    var rightclick;
    if (!e) var e = window.event;
    if (e.which) rightclick = (e.which == 3);
    else if (e.button) rightclick = (e.button == 2);
    alert('Rightclick: ' + rightclick); // true or false
}

Обратите внимание, что, хотя на Mac есть только одна кнопка мыши, Mozilla даетCtrl – Click значение кнопки 2, так как Ctrl – Click также вызывает контекстное меню.iCab еще не поддерживает свойства кнопок мыши, и вы не можете обнаружить правый щелчок в Opera.

0 голосов
/ 08 июля 2010

[jquery] [1] упоминает, как здесь можно обнаружить кнопку мыши: http://api.jquery.com/mousedown/

Событие mousedown отправляется при нажатии любой кнопки мыши.Чтобы действовать только на определенные кнопки, мы можем использовать свойство объекта события.Не все браузеры поддерживают это свойство (вместо этого Internet Explorer использует кнопку), но jQuery нормализует свойство, чтобы его можно было безопасно использовать в любом браузере.Значение будет 1 для левой кнопки, 2 для средней кнопки или 3 для правой кнопки.

...