如何在网页上禁用鼠标右键点击?

22

我想禁用HTML页面上的鼠标右键点击功能。

我有一个页面,用户需要输入详细信息。

我不希望用户看到鼠标右键点击时显示的菜单。相反,我想要显示自定义菜单。我知道有一些插件可供使用,但我的需求不需要任何插件。


16
菜单出了什么问题?它属于用户,所以应该让他来处理。想象一下,如果用户不懂某个单词并希望通过上下文菜单访问某些翻译服务。 - Felix Kling
9
为什么你想这样做?许多用户会感到困惑,如果页面与所有其他网页不同而无法正常工作。 - Henrik Gering
3
任何可被人们看到、听到或运行的文件都可以被同一人复制。您无法阻止它,在Web页面和图像的情况下,您甚至无法使它变得困难 - 在几乎所有浏览器中,查看您的页面的行为就会在用户的计算机上创建一个本地副本。 - cHao
4
请不要实施这个。它非常令人讨厌。 - Tom Gullen
3
我正在为三年级到十二年级的学生编写一个网络应用程序,以便他们学习科学知识。在一次现场测试中,我观察到三年级的学生经常不小心右键点击并弹出上下文菜单,这会分散他们的注意力。因此,所有觉得没有人有充分理由这样做且投票反对该问题的人都是错误的。 - Bobby
显示剩余4条评论
10个回答

51

这不太专业,但只要启用JavaScript,就可以正常工作:

document.oncontextmenu = document.body.oncontextmenu = function() {return false;}
你可能还希望在返回false之前向用户显示一条消息。
但是我必须说,一般情况下不应该这样做,因为它限制了用户的选项,而没有解决问题(实际上,上下文菜单可以很容易地重新启用)。
以下文章更好地解释了为什么不应该这样做以及可以采取哪些其他措施来解决常见相关问题:http://articles.sitepoint.com/article/dont-disable-right-click

1
此外,这不是万无一失的解决方案,他们可以禁用js,然后就可以了。 - Kieran Senior
1
为什么不直接使用 document.oncontextmenu = function () { return false; } 呢? - Jerry Huckins
我正在一个网站上看到这段代码。我无法通过谷歌搜索来重新使上下文菜单工作。有什么方法吗?而不是完全禁用JS。 - Hebe

12

首先,如果您这样做只是为了防止别人查看您网页的源代码 - 那行不通,因为他们总是可以使用键盘快捷键来查看它。

其次,您将需要使用JavaScript来实现此功能。如果用户禁用JS,则无法防止右键单击。

话虽如此,请将此代码添加到您的body标签中以禁用右键单击。

<body oncontextmenu="return false;">

6
你可以使用oncontextmenu事件来实现此功能。
但是,如果用户关闭了JavaScript,则无法处理此事件。
window.oncontextmenu = function () {
   return false;
}

将禁用右键菜单。


如何启用它而不是禁用js? - Hebe

6

<body oncontextmenu="return false;"> 对于我来说在谷歌浏览器中是有效的。其他浏览器就不确定了。

请注意,只需禁用JavaScript即可查看右键菜单。


4

请不要这样做,这非常令人厌烦。

右键菜单有其存在的理由,应该保留在那里。许多浏览器扩展程序会将条目添加到右键菜单中,用户应该能够在访问的任何页面中使用它。

此外,您可以通过其他方式(快捷键、浏览器菜单等)使用右键菜单的所有功能。因此,阻止右键菜单只会使用户感到烦恼。

附注:如果您真的无法抵制阻止右键菜单的冲动,请不要弹出“不允许右键单击”的弹窗。


3
尽管这篇文章提出了一些有益的观点,但它并没有回答问题,所以应该作为评论发布。 - Quentin
@David Dorward:确实回答了问题。我想说的是,尽管他可以阻止右键菜单的出现,但是没有办法真正阻止其功能,因为它们可以通过其他方式访问。阻止右键菜单是不好的做法,所以我认为更好的答案是解释为什么他不应该这样做。 - nico

3

有很多这方面的例子可以在Google上找到。

然而,用户可以关闭Javascript以停止这种极其恼人的“功能”。在实施之前,我认为你应该仔细考虑这一点。如果你想要保护你的内容(如果这是你想要实现的),它并不会真正起到作用。

这里有一篇文章,说明了它有多么恼人和毫无意义。


2
window.oncontextmenu = function () {
return false;
}

可能会对你有所帮助。

2
您可以使用Javascript和/或HTML属性(实际上是Javascript事件处理程序)来实现,如此描述: http://www.codeproject.com/KB/aspnet/Disabling_the_right_click.aspx
<script language="javascript">
document.onmousedown=disableclick;
status="Right Click Disabled";
Function disableclick(event)
{
  if(event.button==2)
   {
     alert(status);
     return false;    
   }
}
</script>

并且

<body oncontextmenu="return false">
...
</body>

1

试试这个:在body下面写入以下代码,感受魔力 :)

body oncontextmenu="return false"

0

//通过 JavaScript 代码禁用右键单击脚本

<script language=JavaScript>
//Disable right click script
var message = "";
///////////////////////////////////
function clickIE() {
    if (document.all) {
        (message);
        return false;
    }
}

function clickNS(e) {
    if (document.layers || (document.getElementById && !document.all)) {
        if (e.which == 2 || e.which == 3) {
            (message);
            return false;
        }
    }
}
if (document.layers) {
    document.captureEvents(Event.MOUSEDOWN);
    document.onmousedown = clickNS;
} else {
    document.onmouseup = clickNS;
    document.oncontextmenu = clickIE;
}

document.oncontextmenu = new Function("return false")
</script>

点击此处查看semo


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