我可以禁用右击在我的网页不使用JavaScript?我问这个问题是因为大多数浏览器允许用户禁用JavaScript。

如果不是,我如何使用JavaScript禁用右键?


当前回答

    <script>
        window.oncontextmenu = function () {
            console.log("Right Click Disabled");
            return false;
        }
    </script>

其他回答

我想添加一个注意(chrome 97),不确定这是否是与chrome或我的环境有关的bug。 右键单击我的应用程序的特定元素在一个新选项卡打开一个页面,使用鼠标下拉和oncontextmenu="返回false"我仍然有上下文菜单出现,甚至在新打开的页面上(只有安装的chrome扩展的菜单出现在上下文菜单上,我认为这个“bug”应该在未来版本的浏览器中得到修复)。

但与此同时,我用这个简单的hack修复了它

function onMouseDown () {
  setTimeout(() => window.open('the link', '_blank'), 100)
}

我只是推迟开账单。我认为出现这个错误是因为右击被新打开的页面捕获,而不是从我的应用程序试图打开选项卡的原始页面捕获。

希望它能让你免于头痛。

如果你的目标是不允许用户简单地保存你的图像,你也可以检查点击的目标是否为图像,只在这种情况下禁用右键。所以右键可以用于其他目的。从上面的代码:

document.addEventListener("contextmenu", function(e){
    if (e.target.nodeName === "IMG") {
        e.preventDefault();
    }
}, false);

这只是拿走了保存图像的最简单的方法,但它仍然可以做到。

如果你是jquery迷,就用这个吧

    $(function() {
        $(this).bind("contextmenu", function(e) {
            e.preventDefault();
        });
    }); 

我知道我迟到了,但我想为我将要提供的答案创建一些假设和解释。

我可以禁用右键吗?

我可以禁用右击在我的网页不使用Javascript?

是的,通过使用JavaScript,你可以禁用任何发生的事件,你可以只通过JavaScript做到这一点。你只需要:

工作硬件 一个网站或其他地方,你可以从那里了解密钥代码。因为你会需要他们。

现在假设你想阻止回车键这里是代码:

function prevententer () {
 if(event.keyCode == 13) {
  return false;
 }
}

右击使用这个:

event.button == 2

在event.keyCode的位置。你会阻止它。

我想问这个问题是因为大多数浏览器允许用户通过Javascript禁用它。

你是对的,浏览器允许你使用JavaScript, JavaScript为你做了所有的工作。你不需要设置任何东西,只需要在头部的脚本属性。

为什么不应该禁用它?

最主要和最快速的答案是,用户不会喜欢它。每个人都需要自由,没有人我的意思是没有人想被屏蔽或禁用,几分钟前我在一个网站上,它阻止了我的右键点击,我想为什么?您需要保护源代码吗?然后这里按ctrl+shift+J,我已经打开了控制台,现在我可以去HTML-code选项卡。来阻止我吧。这不会给你的应用程序添加任何安全层。

有很多有用的菜单在右键单击,如复制,粘贴,搜索谷歌的“文本”(在Chrome中)和更多。因此,用户希望获得方便的访问,而不是记住大量的键盘快捷键。任何人仍然可以复制上下文,保存图像或做任何他想做的事情。

浏览器使用鼠标导航:一些浏览器如Opera使用鼠标导航,所以如果你禁用它,用户肯定会讨厌你的用户界面和脚本。

所以这是基本的,我打算写一些关于保存源代码的东西,呵呵,但是,让它成为你问题的答案。

键码参考:

按键和鼠标按键代码:

http://www.w3schools.com/jsref/event_button.asp

https://developer.mozilla.org/en-US/docs/Web/API/event.button(也会受到用户的赞赏)。

为什么不禁用右键:

http://www.sitepoint.com/dont-disable-right-click/

如果您不关心在用户每次尝试右击时提醒他们一条消息,那么可以尝试将此添加到body标签中

<body oncontextmenu="return false;">

这将阻止对上下文菜单的所有访问(不仅从鼠标右键,而且从键盘)。

然而,正如在其他回答中提到的,添加右击禁用功能确实没有意义。任何具备基本浏览器知识的人都可以查看源代码并提取所需的信息。