Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何禁用鼠标右键单击网页?_Javascript_Html_Mouse_Right Click - Fatal编程技术网

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

Javascript 如何禁用鼠标右键单击网页?,javascript,html,mouse,right-click,Javascript,Html,Mouse,Right Click,我想在HTML页面上禁用鼠标右键单击。 我有一个页面,用户必须在其中输入详细信息。 我不希望用户看到用鼠标右键单击显示的菜单。相反,我想显示一个自定义菜单。我知道有一些插件可以做到这一点。但是我的需求不需要任何插件。您可以使用事件来完成此操作 但是如果用户关闭javascript,那么您将无法处理此问题 window.oncontextmenu = function () { return false; } 将禁用右键单击菜单。这是不专业的,无论如何,这将在启用javascript的情况

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

您可以使用事件来完成此操作

但是如果用户关闭javascript,那么您将无法处理此问题

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

将禁用右键单击菜单。

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

document.oncontextmenu = document.body.oncontextmenu = function() {return false;}
您可能还希望在返回false之前向用户显示消息

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

下面的文章更好地解释了为什么不应该这样做,以及可以采取哪些其他措施来解决常见的相关问题:

首先,如果您这样做只是为了阻止人们查看您的页面源代码,那么它将不起作用,因为他们总是可以使用键盘快捷键查看它

其次,您必须使用JavaScript来实现这一点。如果用户禁用了JS,则无法阻止右键单击

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

<body oncontextmenu="return false;">

在Google Chrome中对我很有用。不确定其他浏览器


请注意,所有人要做的就是禁用JavaScript以查看右键单击菜单。

请不要这样做,这很烦人

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

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


PS:如果你真的忍不住想阻止它,至少不要弹出“不允许右键单击”的弹出窗口。

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

然而,用户可以关闭Javascript来停止这个非常烦人的“特性”。我认为在实施之前你应该认真考虑一下。它实际上不会保护您的内容(如果您正试图实现这一点的话)


有一篇文章说明了它是多么烦人和毫无意义。

试试这个:在身体上写下下面的代码,感受一下它的魔力:)


您可以使用Javascript和/或HTML属性(实际上是一个Javascript事件处理程序)执行此操作,如下所述:


document.onmousedown=disableclick;
status=“右键单击已禁用”;
功能禁用单击(事件)
{
if(event.button==2)
{
警报(状态);
返回false;
}
}


...

//通过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>

//禁用右键单击脚本
var message=“”;
///////////////////////////////////
函数clickIE(){
如果(全部文件){
(信息);
返回false;
}
}
函数clickNS(e){
if(document.layers | |(document.getElementById&&!document.all)){
如果(e.which==2 | | e.which==3){
(信息);
返回false;
}
}
}
if(document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS;
}否则{
document.onmouseup=clickNS;
document.oncontextmenu=点击IE;
}
document.oncontextmenu=新函数(“返回false”)


可能会帮助您。

菜单有什么问题?它属于用户,所以留给他吧。想象一下,一个用户不懂一个单词,想要使用一些可以通过上下文菜单访问的翻译服务。你为什么要这样做?许多用户发现,如果该页面不能像其他所有网页一样工作,就会产生混淆。任何可以被某人看到、听到或运行的文件都可以被同一个人复制。你不能阻止它,对于网页和图像,你甚至不能让它变得困难——在几乎所有浏览器中,查看页面的行为都会在用户的计算机上创建页面的本地副本。请不要实现这一点。我正在为学生(3-12年级)编写一个学习科学的网络应用程序。在一次实地测试中,我观察到三年级学生在测试时不小心一直右键点击并打开上下文菜单。它分散了他们对内容的注意力。所以,对于所有认为没有任何理由让任何人这样做,并且投票否决了这个问题的人来说,你是错的。-1:虽然这提出了一些好的观点,但它没有回答这个问题,所以应该发表评论。@David Dorward:它确实回答了这个问题。我的意思是,尽管他可以阻止右键菜单的出现,但实际上没有办法阻止它的功能,因为它们可以通过其他方式访问。阻止右键单击菜单是一种不好的做法,所以我发现这是一个更好的答案来解释为什么他不应该这样做。此外,这不是一个全面解决方案,他们可以禁用js和hey presto。为什么不只是
document.oncontextmenu=function(){return false;}
<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>
<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>
window.oncontextmenu = function () {
return false;
}