Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 29.04.2008, 13:43
Аватар для scuter
Профессор
Отправить личное сообщение для scuter Посмотреть профиль Найти все сообщения от scuter
 
Регистрация: 14.03.2008
Сообщений: 169

вроди как то так,
document.onContextMenu = function()
{
	return true;
}
Ответить с цитированием
  #12 (permalink)  
Старый 08.10.2009, 10:48
Аватар для Раман
Аспирант
Отправить личное сообщение для Раман Посмотреть профиль Найти все сообщения от Раман
 
Регистрация: 22.09.2009
Сообщений: 46

да не выключается в опере событие oncontextmenu никакими способами
Ответить с цитированием
  #13 (permalink)  
Старый 08.10.2009, 11:10
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 24.07.2008
Сообщений: 1,271

В опере никогда контекстное меню не выключалось и не будет, не парьтесь, забейте на оперу, это говнобраузер...
Ответить с цитированием
  #14 (permalink)  
Старый 05.03.2010, 18:15
Аватар для Раман
Аспирант
Отправить личное сообщение для Раман Посмотреть профиль Найти все сообщения от Раман
 
Регистрация: 22.09.2009
Сообщений: 46

Сообщение от ZoNT Посмотреть сообщение
В опере никогда контекстное меню не выключалось и не будет, не парьтесь, забейте на оперу, это говнобраузер...
Насчет гавнобраузер я тебя полностью потдерживаю.
Ответить с цитированием
  #15 (permalink)  
Старый 05.03.2010, 21:23
Интересующийся
Отправить личное сообщение для moro Посмотреть профиль Найти все сообщения от moro
 
Регистрация: 18.11.2009
Сообщений: 10

в опере, только если включена поддержка правой кнопки в настройках, возможен грязный хак - подложить невидимую кнопку при нажатии правой кнопки мыши, т.к. над кнопками свое контекстное меню опера не показывает
Ответить с цитированием
  #16 (permalink)  
Старый 06.03.2010, 13:30
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Сообщение от ZoNT
не парьтесь, забейте на оперу
Just as planned. Моему любимому контекстному меню ничего не угрожает. :3
Ответить с цитированием
  #17 (permalink)  
Старый 08.11.2010, 04:30
Интересующийся
Отправить личное сообщение для pashak Посмотреть профиль Найти все сообщения от pashak
 
Регистрация: 08.04.2010
Сообщений: 16

no opera context menu
Долго исследовал эту проблему.
Никакие .preventDefault() и return false не спасут. Включение возможности отслеживания правой кнопки тоже не спасают, т.к. это просто ничего не даёт.
Единственный выход, как было уже сказано выше - подложить кнопку под курсор. Даю описание, как это правильно сделать, потому что тут хватает подводных камней:
1. События contextmenu для Оперы не существует, поэтому для него просто вешаем заглушку для остальных браузеров. Натыкался, что вроде как реализовано onrightclick для Оперы под Лялих, но для виндяшной Оперы его также не существует (но Лялих так и не проверил).
2. Подкладывать необходимо <input type="button"/>, этот же фокус с <button></button> Опера игнорирует. Протестил и на других типах. Отменяется также checkbox и radio. Заметил, что отменить может любой input, если на нем не находился курсор до события mouseup.
3. Подавление меню происходит ДО mouseup над вышеупомянутым инпутом. Т.е. если до события mouseup кнопка не окажется под курсором, то подавления не будет.
4. Из третьего пункта следует, что вызывать обработчик события для контекстного меню следует именно при событии mouseup, если была нажата правая клавиша мыши.

В результате всех этих пунктов получился (почти) кроссбраузерный говнокод:
document.oncontextmenu=function(){return false;}
		document.onmousedown=function(e){
			if(e.button==2)
			{
				window.hack_button=document.body.appendChild(document.createElement('input'));
				hack_button.type="button";
				hack_button.style.cssText="display:block;position:fixed;width:100%;height:100%;border:none;top:0;left:0;opacity:0;";
			}
		}
		document.onmouseup=function(e){
			if(e.button==2)
			{
				//тут вписываем грёбаный код обработчика
				//...
				hack_button.parentNode.removeChild(hack_button);
			}
		}

Суть в том, что кнопка на весь экран (ее не нужно таскать за курсором), она в любом случае окажется под курсором.
На ранних операх (до 10-й) не тестил, но предполагаю, что тоже работает.

Плюсы:
1. Способ действительно работающий.
2. Кнопка прозрачна и поэтому не видна юзеру.

Минусы:
1. Способ единственный, но отвратительный.
2. Если пользователь переместил мышь с момента события mousedown, то к сожалению, событие mouseup вызывает подкладываемая кнопка.

Юзать, не юзать - решаете сами...
Ответить с цитированием
  #18 (permalink)  
Старый 08.11.2010, 07:49
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

pashak,
Опера, начиная с версии 10.50, позволяет отменять показ контекстного меню. Как и что вы тестили непонятно.

Кнопка во весь экран это, извините, бред какой-то. Как через неё со всеми элементами на странице-то общаться?
Ответить с цитированием
  #19 (permalink)  
Старый 10.11.2010, 18:38
Аватар для vladlen
Кандидат Javascript-наук
Отправить личное сообщение для vladlen Посмотреть профиль Найти все сообщения от vladlen
 
Регистрация: 19.10.2010
Сообщений: 143

Сообщение от Kolyaj
Как через неё со всеми элементами на странице-то общаться?
а зачем обязательно ее делать над всей страницей? Можно сделать там где надо и будет счастье.
Сообщение от Kolyaj
позволяет отменять
Я так понимаю, что "позволяет" - ключевое слово.

pashak, ну метода не для нубов +1
Ответить с цитированием
  #20 (permalink)  
Старый 10.11.2010, 19:49
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от vladlen
Я так понимаю, что "позволяет" - ключевое слово.
Ключевое слово отменять.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск