如何禁用鼠标右键单击网页?

时间:2010-06-21 10:20:33

标签: javascript html mouse right-click

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

10 个答案:

答案 0 :(得分:44)

这是不专业的,无论如何这将适用于启用javascript:

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

您可能还希望在返回false之前向用户显示消息。

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

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

答案 1 :(得分:7)

首先,如果您这样做只是为了阻止人们查看您的网页来源 - 它将无法使用,因为他们总是可以使用键盘快捷方式来查看它。

其次,您必须使用JavaScript来完成此任务。如果用户已禁用JS,则无法阻止右键单击。

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

<body oncontextmenu="return false;">

答案 2 :(得分:6)

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

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

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

将禁用右键菜单。

答案 3 :(得分:6)

<body oncontextmenu="return false;">适用于Google Chrome。不确定其他浏览器。

注意,所有人必须做的就是禁用JavaScript,以便无论如何都能看到右键菜单。

答案 4 :(得分:3)

有很多这方面的例子可以通过Google

找到

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

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

答案 5 :(得分:1)

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

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

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

PS:如果真的你无法抗拒阻止它的冲动,至少不要弹出一句“不允许右键点击”。

答案 6 :(得分:1)

试试这个:在body&amp;上写下面的代码感受到魔力:)

body oncontextmenu="return false"

答案 7 :(得分:1)

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

可能会帮到你。

答案 8 :(得分:0)

您可以使用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>

答案 9 :(得分: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>

Click here to see semo