Javascript 如何在某些html页面上禁用右键单击,但有一些例外

Javascript 如何在某些html页面上禁用右键单击,但有一些例外,javascript,jquery,Javascript,Jquery,现在我正在使用此代码禁用右键单击: $("body") .attr('ondragstart', 'return false') .attr('onselectstart', 'return false'); var message='Right click is disabled on this page!'; function clickIE4() { if (event.button==2) { alert(messag

现在我正在使用此代码禁用右键单击:

$("body")
      .attr('ondragstart', 'return false')
      .attr('onselectstart', 'return false');

    var message='Right click is disabled on this page!';
    function clickIE4() {
      if (event.button==2) {
        alert(message);
        return false;
      }
    }

    function clickNS4(e) {
      if (document.layers||document.getElementById&&!document.all) {
        if (e.which==2||e.which==3) {
          alert(message);
          return false;
        }
      }
    }

    if (document.layers) {
      document.captureEvents(Event.MOUSEDOWN);
      document.onmousedown=clickNS4;
    } else if (document.all&&!document.getElementById) {
      document.onmousedown=clickIE4;
    }
    document.oncontextmenu = new Function('alert(message); return false');
现在,我已经实现了我自己的上下文菜单,当单击某个类为
.context
元素时,我会显示它

我正在使用


因此,我想禁用所有右键单击上下文菜单,除了带有
.context
类的菜单。您可以尝试以下操作:

 $('body *:not(.context)').on('contextmenu', function (evt) {
     evt.preventDefault();
 });
编辑:这似乎效果更好:

 $(document).on('contextmenu', function (evt) {
     if (!$(evt.target).is('.context')) {
         evt.preventDefault();
     }   
 });

您可以尝试以下方法:

 $('body *:not(.context)').on('contextmenu', function (evt) {
     evt.preventDefault();
 });
编辑:这似乎效果更好:

 $(document).on('contextmenu', function (evt) {
     if (!$(evt.target).is('.context')) {
         evt.preventDefault();
     }   
 });
使用以下代码段:

var message="Right click is disabled on this page!";
jQuery("*").on("contextmenu", function(e) {
    e.stopPropagation();
    if ($(this).hasClass("context")) {
        alert("Opening custom right-click menu.");
    }
    else {
        alert(message);
    }
    return false;
});

使用以下代码段:

var message="Right click is disabled on this page!";
jQuery("*").on("contextmenu", function(e) {
    e.stopPropagation();
    if ($(this).hasClass("context")) {
        alert("Opening custom right-click menu.");
    }
    else {
        alert(message);
    }
    return false;
});

你一定是从某个10年内都没有更新过的地方复制粘贴的。要禁用右键单击,真的没有万无一失的方法。任何人都可以查看您的来源并获取他们想要的任何信息。甚至在Firebug或其他程序中打开它,并实时禁用脚本。除了激怒你的用户,它不会有多大用处。我同意,从可用性的角度来看,这是一个非常糟糕的做法。除了一个可能很恼火的用户,你什么也得不到。你一定是从某个地方复制粘贴了这个东西,而这个地方已经10年没有更新过了。要禁用右键单击,真的没有万无一失的方法。任何人都可以查看您的来源并获取他们想要的任何信息。甚至在Firebug或其他程序中打开它,并实时禁用脚本。除了激怒你的用户,它不会有多大用处。我同意,从可用性的角度来看,这是一个非常糟糕的做法。除了从一个可能恼怒的用户那里,你什么也得不到。