在这种情况下如何重新启用上下文菜单?

时间:2010-06-02 22:05:10

标签: javascript events contextmenu

document.addEventListener('contextmenu', function (e) {
    e.preventDefault()
    e.stopPropagation()
    e.returnValue = false
    e.cancleBubble = true
})

没办法?

修改:document.oncontextmenu = null不起作用。

P.S。我不能拥有监听器功能的引用,因为我不是阻止上下文菜单的站点的所有者。

3 个答案:

答案 0 :(得分:18)

在这种情况下我使用我的书签:

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);

答案 1 :(得分:4)

如果您真的绝望,请尝试在调用addEventListener之前添加此内容。它适用于FF和Chrome。我没有检查任何其他内容。

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

这可能不是最好的做事方式,但它应该是你的具体例子所做的工作:)

答案 2 :(得分:0)

为什么不分配右键单击事件,而不是禁用上下文菜单?

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