Как повторно включить контекстное меню в этом случае? - PullRequest
11 голосов
/ 03 июня 2010
document.addEventListener('contextmenu', function (e) {
    e.preventDefault()
    e.stopPropagation()
    e.returnValue = false
    e.cancleBubble = true
})

Ни за что?

Редактировать: document.oncontextmenu = null не работает.

P.S. У меня не может быть ссылки на функцию прослушивателя, поскольку я не являюсь владельцем сайта, который запрещает контекстное меню.

Ответы [ 3 ]

18 голосов
/ 10 октября 2012

Я использую свой букмарклет в таких случаях:

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);
4 голосов
/ 09 июня 2010

Если вы действительно в отчаянии, попробуйте добавить это до вызова addEventListener. Работает как в FF, так и в Chrome. Я больше ничего не проверял.

document.superListener = document.addEventListener;
document.addEventListener = function(type, listener, useCapture){
    if(type != 'contextmenu')
        document.superListener(type, listener, !!useCapture);
};

Возможно, это не лучший способ сделать что-то, но это должна быть работа, выполненная на вашем конкретном примере:

0 голосов
/ 07 июня 2010

Вместо того, чтобы отключать контекстное меню, почему бы вам не назначить событие правого клика?

http://abeautifulsite.net/2008/05/jquery-right-click-plugin/

...