
И так, проблема:
Opera не позволяет создавать свое контекстное меню и отслеживать правый клик мыши.
Решение:
Как Вы знаете (или не знаете) в Опере есть настройки JavaScript (Инструменты — Настройки — Дополнительно — Содержимое — Настройки JavaScript), там есть свойство «Позволить контролировать правую кнопку мыши». Щелкнув на нее имеем результат — JS отлавливает событие правого клика и показывает контекстное меню, но поверх него выпадает стандартное меню. Немного погуглившись нашел решение своей проблемы:
- // Проверяем браузер, и если это Опера выполняем скрипт
- if(navigator.appName.indexOf("Opera")!=-1){
- // Инициализация скрипта
- (function(){
- // Скрываем контекстное меню, когда нажата кнопка мыши
- addEventListener('mousedown',function(e){
- // Если нажата правая кнопка мыши - меню не закрываем
- if( e && e.button == 2 ){
- cancelMenu(e);
- return false;
- }
- },true);
-
- var overrideButton;
- function cancelMenu(e){
- if(!overrideButton){
- var doc = e.target.ownerDocument;
- overrideButton = doc.createElement('input');
- overrideButton.type='button';
- (doc.body||doc.documentElement).appendChild(overrideButton);
- }
- overrideButton.style='position:absolute;top:'+(e.clientY-2)+'px;left:'+
- (e.clientX-2)+'px;width:5px;height:5px;opacity:0.01';
- }
-
- })( true, 1000 );
- }
* This source code was highlighted with Source Code Highlighter.
Скрипт создает на странице кнопку, которая скрывает стандартное контекстно меню Оперы. Прикрутив этот скрипт к админке, получил следующее (смотреть в Опере). Теперь радуюсь и пользуюсь.
P.S. Во избежание лишних вопросов, скрипт используется только в админке и по этому посчиталось не страшным просить пользователя разрешить отслеживание клика правой кнопки мыши.