Заметки о вёрстке сайтов  ·  Александр Шуркаев об HTML, CSS и JavaScript (скрипты, справочники и примеры по сайтостроению)

Проверка нажатия кнопок «мыши»

21 июня 2001 г.

Определение нажатой кнопки манипулятора типа мышь.

Иногда требуется проверить, какую кнопку «мыши» нажал пользователь. В Netscape Navigator 4+ и Internet Explorer 4+ для этого используется дочерний объект event объекта window. Однако в каждом из браузеров существует своё свойство, определяющее нажатую кнопку. В Internet Explorer это button, а в Netscape Navigator — which.

Предположим, мы хотим «деактивировать» нажатие в браузере правой и/или средней кнопки «мыши» (код 2 или 3). Сделать это можно таким образом:

function mouseTracker(e){
    e = e || window.Event || window.event;
    if (e && ((e.button == 3 || e.button == 2) || (e.which ==3 || e.which == 2))){
        alert("Left clicks only...");
        return false;
    }
}

if (window.captureEvents){ // если Netscape Navigator
    window.captureEvents(Event.MOUSEDOWN);
    window.onmousedown = mouseTracker;
}else{ // если Internet Explorer
    document.onmousedown = mouseTracker;
}

В Internet Explorer 5+, кстати, существует более корректный способ отвадить пользователя вызывать контекстное меню (событие oncontextmenu):

function contextTracker(){
    alert("No context menu, please...");
    return false;
}

document.oncontextmenu = contextTracker;

Этот способ хорош тем, что препятствует вызову контекстного меню посредством клавиатуры (Shift+F10).

Что касается браузера Opera, то Opera 5.02 хоть и поддерживает window.event.which, но почему-то выдаёт только код 0 (ни одна кнопка не нажата)…

Хитовые статьи про разработку сайтов

Рассылка новостей и новых статей

Сообщения будут приходить пару раз в неделю, не чаще

Объявления

LiveInternet