禁用一次后启用上下文菜单

时间:2016-01-13 16:58:34

标签: javascript jquery contextmenu

我正在开发一个过去由一些学生工作的项目,因此代码质量不如它应该的那么好。我正在尝试启用用户右键单击时出现的上下文菜单,但它不会发生。

链接:Click here to visit the project

我尝试过以下任何应该反转任何preventDefault()函数,但它不会起作用。解决这个问题应该很简单,但不知何故上下文菜单不会显示。有什么想法吗?

$(window).bind("contextmenu", function () {
            return true;
});

我无法找到首先禁用contextmenu的原因,因此也就是这个解决方案。我试过用' body'同样,它也不起作用。

2 个答案:

答案 0 :(得分:4)

document.oncontextmenu = null;足以杀死它(在这种情况下),但请确保在调用该脚本后调用它:

您也可以从正文中删除此代码(位于顶部):

<script type="text/javascript">
document.oncontextmenu = function(e){
                    var t = e || window.event;
                    var elm = t.target || t.srcElement;
                    if(elm.nodeName == "A" || elm.type == 'text' || elm.type == 'password') 
                        return true;
                        return false;
                }
</script>

答案 1 :(得分:0)

您可以使用unbind

Docs

  

强大且可扩展的应用程序通常需要两个参数   版本因为这个原因:

var handler = function() {
  alert( "The quick brown fox jumps over the lazy dog." );
};
$( "#foo" ).bind( "click", handler );
$( "#foo" ).unbind( "click", handler );
     

通过命名处理程序,我们可以确信没有其他功能   意外删除。

所以只需命名处理程序:

 var handler = function() {
   return false;
 };
 $( window ).bind( "contextmenu", handler );
 $( window ).unbind( "contextmenu", handler );