warnDefault блокирует контекстное меню в Firefox на Mac, но не на Windows - PullRequest
4 голосов
/ 20 сентября 2011

У меня есть веб-приложение, в котором я подключил события мыши вверх и вниз; Я использую их для выбора и манипулирования графическим языком, для которого мое приложение является редактором. Чтобы предотвратить щелчок правой кнопкой мыши / контекстное меню, предоставляемое Firefox, я поместил:

if (evt.preventDefault) {
  evt.preventDefault();
}

вверху каждой из моих обработчиков событий мыши вверх и вниз. Я не хочу возвращать ложь; Я действительно хочу, чтобы событие распространялось.

На Mac меню, вызываемое правой кнопкой мыши, не отображается; это то, что я ожидаю. В Windows, однако, он упрямо появляется, хотя Firebug подтверждает, что мой вызов «protectDefault» происходит, и аналогично «defaultPrevented» получает значение true.

Есть идеи, что дает? Кто-нибудь еще сталкивался с этой проблемой? Я использую Firefox 6.0.2 на Mac и Windows.

[Обновление: более поздние версии Firefox дали согласованные результаты на Mac и Windows: не удалось отключить контекстное меню на обеих платформах.]

Ответы [ 3 ]

12 голосов
/ 09 февраля 2012

Хорошо. Отложив это и вернувшись к нему несколько раз, я наконец нашел решение.

Попытка справиться с появлением контекстного меню в различных прослушивателях мыши, по-видимому, в корне ошибочна. Вместо этого, благодаря коду, который я нашел здесь , я почувствовал запах события contextmenu. Это событие, кажется, является правильным способом обработки вещей, хотя код, фактически размещенный на этом сайте, не справился с задачей - просто вызвать «stopPropagation» и вернуть false было недостаточно.

У меня сработало следующее:

element.addEventListener('contextmenu', function(evt) { 
  evt.preventDefault();
}, false);

Это было протестировано с Firefox 10.0 на Mac и Firefox 9.0.1 и 10.0 на Windows 7.

0 голосов
/ 12 апреля 2016

Эта опция удалена в 23-й версии Mozilla.

0 голосов
/ 20 сентября 2011
  1. Выберите «Инструменты»> «Параметры».
  2. Перейдите на вкладку «Содержимое».
  3. Нажмите кнопку «Дополнительно» рядом с параметром «Включить JavaScript».
  4. Отключите или замените контекстные меню.,Установите этот флажок, и он снова будет работать волшебным образом.

Невозможно обойти этот параметр в JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...