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

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


当前回答

将此代码放入页面的<head>标记中。

<script type="text/javascript"> 
function disableselect(e){  
return false  
}  

function reEnable(){  
return true  
}  

//if IE4+  
document.onselectstart=new Function ("return false")  
document.oncontextmenu=new Function ("return false")  
//if NS6  
if (window.sidebar){  
document.onmousedown=disableselect  
document.onclick=reEnable  
}
</script>

这将禁用右键点击整个网页,但只有当JavaScript启用。

其他回答

如果你的目标是不允许用户简单地保存你的图像,你也可以检查点击的目标是否为图像,只在这种情况下禁用右键。所以右键可以用于其他目的。从上面的代码:

document.addEventListener("contextmenu", function(e){
    if (e.target.nodeName === "IMG") {
        e.preventDefault();
    }
}, false);

这只是拿走了保存图像的最简单的方法,但它仍然可以做到。

如果不使用Javascript,您就无法完成您的要求。您可以选择使用的任何其他技术只能帮助在服务器端组成web页面,然后发送到浏览器。

没有好的解决方案,没有Javascript的解决方案周期。

最初的问题是关于如何在用户可以禁用JavaScript的情况下停止右击:这听起来邪恶而邪恶(因此有负面的回答)——但所有的副本都重定向到这里,即使许多副本的目的不那么邪恶。

例如,在HTML5游戏中使用右键按钮。这可以用上面的内联代码来实现,或者像这样更好一点:

document.addEventListener("contextmenu", function (e){
    e.preventDefault();
}, false);

但如果你正在制作一个游戏,那么请记住,右键按钮会触发上下文菜单事件——但它也会触发常规的鼠标下拉和鼠标上拉事件。因此,您需要检查事件的which属性,以确定触发事件的是左(which === 1)、中(which == 2)或右(which === 3)鼠标按钮。

下面是jQuery的一个例子——注意,按下鼠标右键将触发三个事件:鼠标按下事件、上下文菜单事件和鼠标起事件。

// With jQuery
$(document).on({
    "contextmenu": function (e) {
        console.log("ctx menu button:", e.which); 

        // Stop the context menu
        e.preventDefault();
    },
    "mousedown": function(e) { 
        console.log("normal mouse down:", e.which); 
    },
    "mouseup": function(e) { 
        console.log("normal mouse up:", e.which); 
    }
});

所以如果你在游戏中使用鼠标左右键,你就必须在鼠标处理程序中执行一些条件逻辑。

只是,不知道。

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

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

不喜欢。

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

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

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

禁用网页上的右键很简单。只需几行JavaScript代码就可以完成这项工作。下面是JavaScript代码:

$("html").on("contextmenu",function(e){
   return false;
});

在上面的代码中,我选择了标签。在你添加了这三行代码后,它将禁用在网页上的右键单击。

源码:禁用右键,复制,在网页上使用jQuery剪切