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

Javascript 禁用一次后启用上下文菜单,javascript,jquery,contextmenu,Javascript,Jquery,Contextmenu,我正在做一个项目,过去有一些学生在做这个项目,因此代码质量不如它应该的好。我试图启用当用户右键单击时出现的上下文菜单,但它没有发生 链接: 我尝试了以下方法,可以反转任何preventDefault()函数,但它不起作用。解决这个问题应该很简单,但是上下文菜单不会显示。有什么想法吗 $(window).bind("contextmenu", function () { return true; }); 我找不到为什么contextmenu首先被禁用的原因,因此也找不到这

我正在做一个项目,过去有一些学生在做这个项目,因此代码质量不如它应该的好。我试图启用当用户右键单击时出现的上下文菜单,但它没有发生

链接:

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

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

我找不到为什么contextmenu首先被禁用的原因,因此也找不到这个解决方案。我也尝试过使用“body”,但它也不起作用。

document.oncontextmenu=null
足以杀死它(在本例中),但请确保在调用该脚本后调用它:

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


document.oncontextmenu=函数(e){
var t=e | | window.event;
var elm=t.target | | t.src元素;
if(elm.nodeName==“A”| | elm.type==“text”| | elm.type==“password”)
返回true;
返回false;
}

document.oncontextmenu=null
足以杀死它(在本例中),但请确保在调用该脚本后调用它:

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


document.oncontextmenu=函数(e){
var t=e | | window.event;
var elm=t.target | | t.src元素;
if(elm.nodeName==“A”| | elm.type==“text”| | elm.type==“password”)
返回true;
返回false;
}

您可以使用
解除绑定

:

健壮且可扩展的应用程序通常需要两个参数 基于此原因的版本:

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

您可以使用
unbind

:

健壮且可扩展的应用程序通常需要两个参数 基于此原因的版本:

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

我不相信你可以取消默认设置,你应该首先避免它。你的链接页面也会加载4个不同的jQuery版本。我认为这对您的情况没有帮助。我不相信您可以取消默认设置,您应该首先尝试避免它。您的链接页面也会加载4个不同的jQuery版本。我认为这对您的情况没有帮助。如果是这样的话,jQuery似乎将两者都删除。但是如果这里没有处理程序,您是如何测试它的?@CodeiSir抱歉,我的错,我有点误解了这个问题:)@CodeiSir我的观点是,一般来说,您可以绑定/取消绑定contextmenu。你说得对:)Np,在我这方面,我还是学到了一些关于jQuery的新知识,谢谢;)如果是这样的话,jQuery似乎将两者都删除。但是如果这里没有处理程序,您是如何测试它的?@CodeiSir抱歉,我的错,我有点误解了这个问题:)@CodeiSir我的观点是,一般来说,您可以绑定/取消绑定contextmenu。你说得对:)Np,在我这方面,我还是学到了一些关于jQuery的新知识,谢谢;)