Jquery/JS阻止了浏览器中的右键菜单

Tom*_*len 52 javascript jquery right-click

我有一个右键单击弹出菜单的div:

// Attatch right click event to folder for extra options
$('#fBox' + folderID).mousedown(function(event) {
    if (event.which == 3) {

        // Set ID
        currRClickFolder = folderID;

        // Calculate position to show popup menu
        var height = $('#folderRClickMenu').height();
        var width = $('#folderRClickMenu').width();
        leftVal = event.pageX - (width / 2) + "px";
        topVal = event.pageY - (height) + "px";
        $('#folderRClickMenu').css({ left: leftVal, top: topVal }).show();

    }
});
Run Code Online (Sandbox Code Playgroud)

但是这个元素的浏览器仍会弹出默认菜单(复制/粘贴/属性等).有什么方法可以禁用它吗?我试过回复假,但没有运气.

Ars*_*eny 107

您可以通过附加oncontextmenu ="return false"来禁用右键单击; 到你的身体标签.

<body oncontextmenu="return false;">
Run Code Online (Sandbox Code Playgroud)

  • 你尝试将它添加到fbox的父级而不是身体吗? (20认同)
  • 我不想为每个元素禁用它,因为它对用户来说过于突兀,只是我指定的元素就是我想要的. (5认同)
  • 非常感谢!oncontextmenu ="return false;" 分配到容器div工作了一个款待. (4认同)
  • 很高兴它工作:)你也可以投票我的评论:D LoL :) (2认同)

Web*_*ars 44

您可以在所需的任何元素上禁用上下文菜单:

$('selector').contextmenu(function() {
    return false;
});
Run Code Online (Sandbox Code Playgroud)

要完全禁用页面上的上下文菜单(感谢Ismail),请使用以下命令:

$(document).contextmenu(function() {
    return false;
});
Run Code Online (Sandbox Code Playgroud)

  • $('*')选择器非常大量使用$(文档) (4认同)

Kri*_*Dev 13

一个jQuery行:

$('[id^="fBox"]').on("contextmenu", function(evt) {evt.preventDefault();});
Run Code Online (Sandbox Code Playgroud)


San*_*tak 8

试试这个:

$('#fBox' + folderID).bind("contextmenu", function () {
                alert("Right click not allowed");
                return false;
            });
Run Code Online (Sandbox Code Playgroud)

  • 如果要运行其余代码,请使用preventDefault()而不是return false.返回false会停止所有事件传播,但preventDefault()将停止当前事件并继续执行其余代码. (2认同)