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

Мышиные сочетания

9 августа 2002 г.

Гениальнейшим нововведением в Opera 6 являются мышиные сочетания. Попробуем сымитировать эту фичу в Internet Explorer.

Автор статьи: Азат Разетдинов

«Рулит ли Опера?» — таким вопросом как-то задался Дмитрий Смирнов, интернет-журналист и автор сайта spectator.ru. Речь шла о четвёртой версии самого маленького и скоростного браузера на Земле.

Ныне, когда этот коротышка, в пылу битвы незамеченный гигантами Internet Explorer и Netscape Communicator, дошёл до шестой версии, вопросов не возникает: Опера 6 рулит бесповоротно.

Гениальнейшим нововведением являются мышиные сочетания. Теперь для того, чтобы перейти назад (открыть предыдущую страницу), достаточно нажать правую кнопку мыши, затем, не отпуская, — левую, как бы пробегаясь пальцами справа налево. Чтобы «вернуться вперёд», нужно сделать то же самое в обратном направлении. Просто, как и гениально.

Попробуем сымитировать эту фичу в Internet Explorer. Как известно, есть такое событие onMouseDown, отслеживающее нажатия мыши. И есть у этого события свойство button, содержащее код нажатой кнопки. В ходе проверки выяснилось следующее:

Что нажимаем Значение event.button
Левая кнопка 1
Правая кнопка 2
Левая при нажатой правой 3
Правая при нажатой левой 3
Левая и правая вместе 4
Средняя кнопка или колесо 4
Средняя при нажатой левой 5
Средняя  нажатой правой 6

Из таблицы видно, что в какой последовательности ни нажимай кнопки мыши, свойство event.button принимает одно и то же значение 3. Чтобы узнать, какую страницу хочет открыть пользователь, запоминаем кнопку, которая была нажата первой. Для перехода по истории окна используем метод history.go(). Аргумент вычисляем из следующей таблицы:

Предыдущее значение event.button Аргумент для history.go()
1 (левая кнопка) +1 (вперёд)
2 (правая кнопка) –1 (назад)

Собираем всё воедино и получаем результат:

<BODY onMouseDown="if(event && event.button && event.button==3) {history.go(3-2*btn); return false;} btn=event.button;"></BODY>

Автор статьи: Азат Разетдинов

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

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

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

Объявления

LiveInternet