如何使用jQuery禁用HTML页面中的右键菜单

14

我正在寻找一种简单的方法,使用 jQuery 隐藏/禁用整个 HTML 页面的右键菜单,但不包括像输入[text]和文本区域这样的可编辑 HTML 元素。

我知道以下 jQuery 代码,但是下面的代码将禁用所有 HTML 元素的上下文菜单,甚至在可编辑对象中也会被禁用...

$(document).ready(function(){
    $(this).bind("contextmenu", function(e) {
        e.preventDefault();
    });
});
5个回答

19

您可以按照以下方式检查所需的标记:

$(document).ready(function(){
    $(document).on("contextmenu",function(e){
        if(e.target.nodeName != "INPUT" && e.target.nodeName != "TEXTAREA")
             e.preventDefault();
     });
 });

这正是我需要的,非常感谢。 - M.J.Ahmadi

3
把你的id或class名称指定到你想要禁用的区域,例如:
$("#your_id").bind("contextmenu", function(e) {
    e.preventDefault();
});

2
你可以使用这个方法来禁用特定的标签(比如替换img标签)。
$(document).ready(function() {
$("img").bind("contextmenu",function(){
   return false;
});});

感谢Peeter的贡献 如何使用jquery禁用右键菜单


4
请至少注明出处。编辑您的答案,包括此链接:https://dev59.com/km035IYBdhLWcg3wHsKR,并说明该答案由Peeter提供。 - Tarun
我错过了它...现在完成了。 - Jitu

1
将其与所有元素绑定,您需要:

$(document).ready(function(){
  $(document).bind("contextmenu",function(e){
     e.preventDefault();//or return false;
 });
 });

0

试试这段代码

   <input type="text" id="test1"/>
<input type="text" id="test2"/>

JS 代码:

$( "#test1" ).on( "copy cut paste drop", function() {
            return false;
    });

Jsfiddle


你仔细地阅读了我的问题吗?! - M.J.Ahmadi
@MJ.Ahmadi 很抱歉误读了您的问题,但是如果您想通过禁用右键来防止用户复制、剪切、粘贴或将某些内容拖放到您的文本框中,我认为您应该使用调用剪切、复制和其他事件的 jQuery 事件,因为用户也可以使用快捷键将内容剪切、复制和粘贴到文本框中。我已经更新了我的答案。 - Tushar Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接