1

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

$("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');

现在我已经实现了自己的上下文菜单,并且在单击a带有 class 的某个元素时显示它.context

我正在使用http://medialize.github.io/jQuery-contextMenu/demo.html

所以我想禁用所有右键单击上下文菜单,除了带有.context类的菜单

4

2 回答 2

1

您可以尝试以下方法:

 $('body *:not(.context)').on('contextmenu', function (evt) {
     evt.preventDefault();
 });

编辑:这似乎效果更好:

 $(document).on('contextmenu', function (evt) {
     if (!$(evt.target).is('.context')) {
         evt.preventDefault();
     }   
 });
于 2013-07-02T15:11:57.220 回答
0

使用这个片段:

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

在此处查看演示。

于 2013-07-02T15:13:08.070 回答