2009-12-09 7 views
2

Я хочу реализовать пользовательское контекстное меню на сайте, над которым я работаю. Я использовал document.oncontextmenu, который работает со всеми, кроме Opera, основных браузеров, для которых я разрабатываю. Как я мог бы получить тот же результат в Opera? Мне нужно отключить контекстное меню по умолчанию и показать мой.Opera, настраиваемое контекстное меню, подбирая правой кнопкой мыши

Первое, что я хотел бы сделать, это подобрать правую кнопку мыши, как document.body.onmousedown не признаются в Опере ...

Спасибо, Р.

+2

Это раздражает, но я слышал, что это идеология с Opera. Они полагают, что пользователь должен всегда иметь доступ к контекстному меню Opera. Если вы найдете работу, чтобы отключить контекстное меню по умолчанию, я уверен, что многие из нас хотели бы знать! – DMKing

+1

Наконец, это было исправлено в Opera 10.5 – user123444555621

ответ

1

Я считаю, что Opera преднамеренно не может пройти правые клики к скриптам. Наверное, слишком много сайтов с глупыми всплывающими сообщениями «защита от копирования».

Предполагаю, что вы меняете (щелкните правой кнопкой мыши -> Изменить настройки сайта -> Сценарии -> Разрешить сценарии для обнаружения событий контекстного меню) делает Opera таким же, как вы ожидаете?

+2

Спасибо, полезный бит информации, но не он не достиг того, чего я хотел, что было позором :) Это не авторское право на фактически добавленную функциональность, так что факт, t работа немного раздражает. – flavour404

1

uTorrent web UI каким-то образом отображает пользовательское контекстное меню на rightclick в опере. Вы можете проверить его источники, чтобы узнать, как он был реализован.

+0

Спасибо, я проверю. – flavour404

3

Делая небольшое исследование, я нашел интересный маленький лакомый на JQuery context menu plugin

* Opera 9.5 имеет возможность разрешить сценарии для обнаружения правой кнопки мыши, но отключена по умолчанию. Кроме того, Opera по-прежнему не разрешает JavaScript отключить контекстное меню браузера по умолчанию , что приводит к необходимости использования контекста .

Найдено еще один интересный бит, который может привести вас в правильном направлении в opera.linux google group

Opera не поддерживает Javascript событие oncontextmenu, которые используют эти скрипты. Opera поддерживает onrightclick, но, как вы видите, это отключено по умолчанию. Мне сказали, что в прошлом нашими разработчиками, которые реализации поддержки не столь тривиальна как сделать oncontextmenu псевдоним для onrightclick, бывший по-видимому, делает намного больше.

... и этот фрагмент кода с помощью event.button для проверки правой кнопкой мыши ...

  addEventListener('mouseup',function(e){ 
        if(e && e.button == 2){ 
          document.write('a'); 
          return false; 
        } 
      },true); 

Однако ни одно из этих решений не собираются, чтобы дать вам то, что вы хотите (на основе первого цитируемый сегмент) ... Кажется, Opera придерживается мнения, что щелчок правой кнопкой мыши на веб-страницах всегда должен давать пользователю «стандартное» контекстное меню.

1

В двух словах: вам нужно включить предпочтение в настройках Opera, а oncontextmenu пока не поддерживается, поэтому вам нужно прослушать событие mousedown или click.

Некоторых сценариев использовать (очень некрасиво) взломать, чтобы отключить собственное контекстное меню Opera, когда предпочтение включено: от события MouseDown, создать невидимый < типа входного сигнала = кнопка > элемент и поместить его там, где происходит щелчок.Поскольку Opera не имеет контекстного меню для кнопок, его внутреннее меню не отображается. Как я уже сказал, это очень уродливо: -p

Надлежащая поддержка oncontextmenu должна появиться в следующей версии Opera - не считая незначительной стабильности и обновлений безопасности, конечно. Если вам не нравится уродливое обходное решение, просто ждите его.

Смежные вопросы