22

我想禁用鼠标右键单击 HTML 页面。我有一个页面,用户必须在其中输入详细信息。我不希望用户看到通过鼠标右键单击显示的菜单。相反,我想显示一个自定义菜单。我知道有一些插件可以做到这一点。但我的要求不需要任何插件。

4

10 回答 10

51

这是不专业的,无论如何这将在启用 javascript 的情况下工作:

document.oncontextmenu = document.body.oncontextmenu = function() {return false;}

您可能还想在返回 false 之前向用户显示一条消息。

但是我不得不说这通常不应该这样做,因为它限制了用户选项而不解决问题(实际上上下文菜单可以很容易地再次启用。)。

以下文章更好地解释了为什么不应该这样做以及可以采取哪些其他措施来解决常见的相关问题: http ://articles.sitepoint.com/article/dont-disable-right-click

于 2010-06-21T10:24:30.327 回答
10

首先,如果您这样做只是为了防止人们查看您的页面的来源 - 它不会起作用,因为他们总是可以使用键盘快捷键来查看它。

其次,您将不得不使用 JavaScript 来完成此操作。如果用户禁用了 JS,则无法阻止右键单击。

也就是说,将此添加到您的正文标签以禁用右键单击。

<body oncontextmenu="return false;">
于 2010-06-21T10:25:25.910 回答
6

<body oncontextmenu="return false;">在谷歌浏览器中为我工作。不确定其他浏览器。

请注意,任何人只要禁用 JavaScript 就可以看到右键菜单。

于 2010-06-21T10:25:39.607 回答
6

您可以使用oncontextmenu事件来执行此操作。

但是如果用户关闭了 javascript,那么你将无法处理这个问题。

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

将禁用右键菜单。

于 2010-06-21T10:22:48.350 回答
3

有很多这样的例子可以通过谷歌找到

但是,用户可以关闭 Javascript 来停止这个非常烦人的“功能”。我认为您应该在实施之前真正考虑一下。它不会真正保护您的内容(如果这是您想要实现的目标)。

这里有一篇文章说明了它是多么令人讨厌和毫无意义。

于 2010-06-21T10:28:54.387 回答
2

请不要这样做,这很烦人。

右侧菜单的存在是有原因的,它应该留在那里。许多浏览器扩展在右键菜单中添加条目,用户应该能够在他访问的任何页面中使用它。

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

PS:如果您真的无法抗拒阻止它的冲动,至少不要弹出“不允许右键单击”的弹出窗口。

于 2010-06-21T10:28:16.523 回答
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>
于 2013-09-12T11:19:20.297 回答
2
window.oncontextmenu = function () {
return false;
}

可能会帮助你。

于 2014-01-15T21:40:58.783 回答
1

试试这个:在身体上写下代码并感受魔力:)

body oncontextmenu="return false"
于 2013-06-27T13:56:48.137 回答
0

//通过java脚本代码禁用右键脚本

<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

于 2013-12-24T05:36:16.470 回答