Как повторно включить контекстное меню в этом случае?
document.addEventListener('contextmenu', function (e) {
e.preventDefault()
e.stopPropagation()
e.returnValue = false
e.cancleBubble = true
})
Никоим образом?
Изменить: document.oncontextmenu = null
не работает.
P.S. Я не могу ссылаться на функцию прослушивателя, так как я не являюсь владельцем сайта, предотвращающим контекстное меню.
Ответы
Ответ 1
Если вы действительно отчаянно, попробуйте добавить это до вызова addEventListener
. Он работает как в FF, так и в Chrome. Я ничего не проверял.
document.superListener = document.addEventListener;
document.addEventListener = function(type, listener, useCapture){
if(type != 'contextmenu')
document.superListener(type, listener, !!useCapture);
};
Это не лучший способ сделать что-то, но это должно быть выполнено на вашем конкретном примере:)
Ответ 2
Я использую свой букмарклет в таких случаях:
javascript:(function(w){
var arr = ['contextmenu','copy','cut','paste','mousedown','mouseup','beforeunload','beforeprint'];
for(var i = 0, x; x = arr[i]; i++){
if(w['on' + x])w['on' + x] = null;
w.addEventListener(x, function(e){e.stopPropagation()}, true);
};
for(var j = 0, f; f = w.frames[j]; j++){try{arguments.callee(f)}catch(e){}}})(window);
Ответ 3
Вместо того, чтобы отключать контекстное меню, почему бы вам не назначить событие правого клика?
http://abeautifulsite.net/2008/05/jquery-right-click-plugin/