JavaScript: захват правого клика и отключение меню только внутри определенного элемента - PullRequest
6 голосов
/ 04 июня 2010

Я кодировал скрипт jquery, где на экране есть небольшая сетка, и с помощью перетаскивания пользователи могут размещать плитки на сетке (щелкает на месте). В настоящее время, если вы наведите курсор мыши на плитку, она исчезнет, ​​если повернуть ее, но я бы предпочла, чтобы вы могли вращать ее правой кнопкой мыши (чтобы сделать ее более естественной). Я понимаю, что полное блокирование правого щелчка часто вызывает неодобрение, поэтому мне было интересно, возможно ли это сделать только внутри определенного элемента, затем захватить это событие, сделать что-то в JS и отключить контекстное меню? - это работает в любом браузере.

В дополнение к этому, в настоящее время я использую jQuery для эффектов и пользовательский javascript для перетаскивания, стоит ли смотреть на плагин jQuery для перетаскивания?

Большое спасибо,

Ответы [ 3 ]

12 голосов
/ 04 июня 2010

Для захвата правой кнопки мыши вы можете использовать этот jquery:

$('#gridID').bind('contextmenu', function(e) {
   // do stuff here instead of normal context menu
   return false;
});

Это работает в Chrome, Firefox и Safari. Не проверял IE . Работает в IE тоже. Только предостережение, что это не работает в Opera, по-видимому. Так что, если вы можете жить с этим ...

0 голосов
/ 04 июня 2010

"Стоит ли смотреть на плагин jQuery для перетаскивания?"

Только если вы не собираетесь использовать свое приложение на iPhone O.S с Safari, например, с iPad, см. Руководство по веб-контенту Safari: обработка событий

0 голосов
/ 04 июня 2010

Я не фанат использования правой кнопки мыши на веб-страницах. Однако, если вы действительно хотите это сделать, вы можете перехватить правую кнопку мыши, как описано здесь . Вы можете условно заблокировать правую кнопку мыши (другими словами вернуть false в вашем обработчике событий), если мышь находится над ячейками вашей сетки.

По поводу вашего бонусного вопроса: JQuery UI имеет функцию перетаскивания мышью . Возможно, это проще использовать, чем свернуть свое собственное.

...