我可以禁用右击在我的网页不使用JavaScript?我问这个问题是因为大多数浏览器允许用户禁用JavaScript。
如果不是,我如何使用JavaScript禁用右键?
我可以禁用右击在我的网页不使用JavaScript?我问这个问题是因为大多数浏览器允许用户禁用JavaScript。
如果不是,我如何使用JavaScript禁用右键?
当前回答
<!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>
其他回答
我想添加一个注意(chrome 97),不确定这是否是与chrome或我的环境有关的bug。 右键单击我的应用程序的特定元素在一个新选项卡打开一个页面,使用鼠标下拉和oncontextmenu="返回false"我仍然有上下文菜单出现,甚至在新打开的页面上(只有安装的chrome扩展的菜单出现在上下文菜单上,我认为这个“bug”应该在未来版本的浏览器中得到修复)。
但与此同时,我用这个简单的hack修复了它
function onMouseDown () {
setTimeout(() => window.open('the link', '_blank'), 100)
}
我只是推迟开账单。我认为出现这个错误是因为右击被新打开的页面捕获,而不是从我的应用程序试图打开选项卡的原始页面捕获。
希望它能让你免于头痛。
使用此功能可以禁用右键操作。你可以禁用左键点击也检查1和0对应
document.onmousedown = rightclickD;
function rightclickD(e)
{
e = e||event;
console.log(e);
if (e.button == 2) {
//alert('Right click disabled!!!');
return false; }
}
首先,如果不使用客户端功能,就无法实现这一点。这是javascript运行的地方。
其次,如果您试图控制终端用户可以从您的网站消费什么,那么您需要重新考虑如何显示这些信息。图像有一个公共url,可以通过HTTP获取,而不需要浏览器。
身份验证可以控制谁可以访问哪些资源。
在图像中嵌入水印可以证明图像来自特定的人/公司。
归根结底,资源管理实际上是用户/客户管理。
互联网的第一条规则,如果你不想让它被拿走,就不要让它公开!
互联网的第二条规则,如果你不想要它被拿走,就不要把它放在网上!
最初的问题是关于如何在用户可以禁用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为"contextmenu"事件添加一个事件监听器,并调用preventDefault()方法:
document.addEventListener('contextmenu', event => event.preventDefault());
也就是说:不要这么做。
为什么?因为它只会惹恼用户。此外,许多浏览器都有一个安全选项来禁止禁用右键(上下文)菜单。
不知道你为什么想这么做。如果是出于某种错误的信念,认为可以通过这种方式保护源代码或图像,请再想想:您不能这样做。