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

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


当前回答

下面有三种最流行的方法来禁用在网页上单击鼠标右键。

#1使用HTML正文标签

<body oncontextmenu="return false;">

#2使用CSS

body {
    -webkit-user-select: none;  /* Chrome all / Safari all */
    -moz-user-select: none;     /* Firefox all */
    -ms-user-select: none;      /* IE 10+ */
    -o-user-select: none;
    user-select: none;
}

#3使用JavaScript

document.addEventListener('contextmenu', e => e.preventDefault());

其他回答

只是,不知道。

无论你做什么,你都不能阻止用户完全访问你网站上的每一点数据。你所编写的任何Javascript代码都可以通过关闭浏览器上的Javascript(或者使用NoScript这样的插件)而变得毫无意义。此外,没有办法禁用任何用户仅仅“查看源代码”或“查看页面信息”(或使用wget)的功能。

不值得这么费劲。这实际上是行不通的。它会让你的网站对用户充满敌意。他们会注意到这一点,并停止访问。这样做没有任何好处,只会浪费精力和损失流量。

不喜欢。

更新:随着时间的推移,这个小话题似乎已经被证明是相当有争议的。即便如此,我仍然坚持这个问题的答案。有时正确的答案是建议,而不是字面上的回答。

那些无意中发现这个问题并希望找到如何创建自定义上下文菜单的人应该看看其他地方,比如这些问题:

为我的web应用程序制作自定义右键上下文菜单,这依赖于jQuery 如何添加一个自定义右键菜单的网页,这使用纯javascript/html

如果你只是想禁用右键保存网页上的图像,请使用以下CSS解决方案:

your-img-tag {
  pointer-events: none;
}

在同一映像上实现之前:

在同一映像上实现后:

在Chrome和Firefox中都进行了测试。

<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.4.min.js'></script>
<script type='text/javascript'>//<![CDATA[ 
$(function(){
$('img').bind('contextmenu', function(e){
return false;
}); 
});//]]>  
</script>
</head>
<body>
    <img src="http://www.winergyinc.com/wp-content/uploads/2010/12/ajax.jpg"/>
</body>

你可以用JavaScript为"contextmenu"事件添加一个事件监听器,并调用preventDefault()方法:

document.addEventListener('contextmenu', event => event.preventDefault());

也就是说:不要这么做。

为什么?因为它只会惹恼用户。此外,许多浏览器都有一个安全选项来禁止禁用右键(上下文)菜单。

不知道你为什么想这么做。如果是出于某种错误的信念,认为可以通过这种方式保护源代码或图像,请再想想:您不能这样做。

试试这个

<script language=JavaScript>
//Disable right mouse click Script

var message="Function Disabled!";

function clickIE4(){
if (event.button==2){
alert(message);
return false;
 }
}

function clickNS4(e){
if (document.layers||document.getElementById&&!document.all){
if (e.which==2||e.which==3){
alert(message);
return false;
}
}
}

if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS4;
}
else if (document.all&&!document.getElementById){
document.onmousedown=clickIE4;
}

document.oncontextmenu=new Function("alert(message);return false")

</script>