是否可以在不使用JavaScript的情况下禁用网页上的右键单击?我问这个问题是因为大多数浏览器都允许用户禁用JavaScript。
如果没有,如何使用JavaScript禁用右键单击?
是否可以在不使用JavaScript的情况下禁用网页上的右键单击?我问这个问题是因为大多数浏览器都允许用户禁用JavaScript。
如果没有,如何使用JavaScript禁用右键单击?
Answers:
您可以使用JavaScript通过为“ contextmenu”事件添加事件侦听器并调用preventDefault()
方法来做到这一点:
document.addEventListener('contextmenu', event => event.preventDefault());
话虽这么说:不要做。
为什么?因为它除了使用户烦恼之外什么也没有。同样,许多浏览器都有一个安全选项,无论如何都不允许禁用右键单击(上下文)菜单。
不知道为什么要这么做。如果出于某种误以为您可以用这种方式保护源代码或图像的想法,请再考虑一遍:您不能。
oncontextmenu="return false"
上比身体其他的东西可能是有意义的,例如在画布上。
别
只是,不要。
无论您做什么,都不能阻止用户完全访问您网站上的所有数据。只需关闭浏览器上的Javascript(或使用NoScript之类的插件),就可以对您编写的任何Javascript进行模拟。此外,无法禁止任何用户为您的站点简单地“查看源代码”或“查看页面信息”(或使用wget)。
这不值得付出努力。它实际上不会工作。这将使您的网站对用户产生积极的敌意。他们会注意到这一点并停止访问。这样做没有任何好处,只有浪费的精力和丢失的流量。
别。
更新:随着时间的流逝,这个小话题似乎已经引起很大争议。即使这样,我仍然支持这个问题的答案。有时正确的答案是建议,而不是字面意思。
希望找到如何创建自定义上下文菜单的人迷失了这个问题,应该看看其他地方,例如这些问题:
<body oncontextmenu="return false;">
最初的问题是关于在用户可以禁用JavaScript的情况下如何停止右键单击:这听起来像是邪恶的和邪恶的(因此得到否定的响应)-但是所有重复项都重定向到此处,即使许多重复项要求的目的是减少邪恶。
例如,就像在HTML5游戏中使用右键单击按钮一样。这可以通过上面的内联代码来完成,或者更好一点的是这样的:
document.addEventListener("contextmenu", function(e){
e.preventDefault();
}, false);
但是,如果要制作游戏,请记住,右键单击按钮会触发contextmenu事件-但它也会触发常规的mousedown和mouseup事件。所以你需要检查事件的这属性,以查看触发事件的鼠标按钮是左侧(哪个=== 1),中间(哪个=== 2)还是右侧(哪个=== 3)。
这是jQuery中的一个示例-请注意,按下鼠标右键将触发三个事件:mousedown事件,contextmenu事件和mouseup事件。
// 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);
}
});
因此,如果您在游戏中使用左右鼠标按钮,则必须在鼠标处理程序中执行一些条件逻辑。
如果您不希望每次尝试右键单击时都通过消息提醒用户,请尝试将其添加到您的正文标签中
<body oncontextmenu="return false;">
这将阻止所有对上下文菜单的访问(不仅是鼠标右键,还有键盘)。
但是,正如其他答案中所述,添加右键单击禁用器确实没有意义。任何具有基本浏览器知识的人都可以查看源并提取所需的信息。
如果您是jquery的粉丝,请使用此
$(function() {
$(this).bind("contextmenu", function(e) {
e.preventDefault();
});
});
this
在ready事件中使用此方法?为什么用bind
代替on
?
如大多数人所说,如果您的目标是防止人们能够下载您的图像,则禁用右键单击几乎是无效的。
假设您尝试保护图像,则替代方法是-
使用Flash Player,用户无法像这样下载它们,但是他们可以轻松地进行屏幕捕获。
如果您想变得更笨拙,请将图片设为div的背景,并包含透明图片àla-
<div style="background-image: url(YourImage.jpg);">
<img src="transparent.gif"/>
</div>
足以阻止您的图像被随意盗用(请参见下面的示例),但是与所有这些技术一样,通过对html的基本理解可以轻松解决。
如果不使用Javascript,就无法完成您要问的问题。您可能选择使用的任何其他技术只能帮助在服务器端编写要发送到浏览器的网页。
根本就没有好的解决方案,没有Javascript就没有解决方案。
如果您的目标是禁止用户简单地保存图像,则还可以检查单击的目标是否为图像,在这种情况下只能禁用右键单击。因此,右键单击可用于其他目的。摘自上面的代码:
document.addEventListener("contextmenu", function(e){
if (e.target.nodeName === "IMG") {
e.preventDefault();
}
}, false);
这只是为了消除保存图像的最简单方法,但是仍然可以做到。
<!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>
将此代码放入<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的情况下。
我曾使用此代码禁用任何网页上的右键单击,其工作正常。您可以使用此代码
jQuery(document).ready(function(){
jQuery(function() {
jQuery(this).bind("contextmenu", function(event) {
event.preventDefault();
alert('Right click disable in this site!!')
});
});
});
<html>
<head>
<title>Right click disable in web page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
You write your own code
</body>
</html>
尝试这个
<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>
禁用网页上的右键单击很简单。只有几行JavaScript代码可以完成这项工作。以下是JavaScript代码:
$("html").on("contextmenu",function(e){
return false;
});
在上面的代码中,我选择了标签。仅添加了三行代码后,它将禁用在网页上的右键单击。
$(document).ready(function () {
document.oncontextmenu = document.body.oncontextmenu = function () { return false; }
});
我知道我迟到了,但是我想为我要提供的答案创建一些假设和解释。
我可以不使用Java脚本禁用网页上的右键单击吗?
是的,通过使用JavaScript,您可以禁用任何发生的事件,并且只能通过javaScript进行。您需要做的是:
工作硬件
您可以从中了解密钥代码的网站或某个地方。因为您将需要它们。
现在,假设您想阻止回车键,这里是代码:
function prevententer () {
if(event.keyCode == 13) {
return false;
}
}
对于右键单击,请使用以下命令:
event.button == 2
代替event.keyCode
。然后您将阻止它。
我想问这个问题,因为大多数浏览器都允许用户通过Javascript禁用它。
没错,浏览器允许您使用JavaScript
javascript来完成整个工作。您不需要设置任何内容,只需要在头中添加script属性。
对此的主要且快速的回答是,用户不会喜欢它。每个人都需要自由,没有人,我的意思是没有人想要被阻止或禁用。几分钟前,我在一个站点上,该站点阻止了我单击鼠标右键,我觉得为什么?您需要保护源代码吗?然后在这里ctrl+shift+J
我打开了Console
,现在我可以转到HTML-code
选项卡。来阻止我 这不会为您的应用添加任何安全层。
右键单击中有很多有用的菜单,例如“复制”,“粘贴”,在Google中搜索“文本”(在Chrome中)等。因此,用户希望获得轻松访问,而不是记住很多键盘快捷键。任何人仍然可以复制上下文,保存图像或执行他想做的任何事情。
浏览器使用鼠标导航:某些浏览器(例如Opera)使用鼠标导航,因此如果禁用它,用户肯定会讨厌您的用户界面和脚本。
这就是基本知识,我将写更多有关保存源代码的内容,但是,让它成为您问题的答案。
按键和鼠标按钮代码:
http://www.w3schools.com/jsref/event_button.asp
https://developer.mozilla.org/zh-CN/docs/Web/API/event.button(也将受到用户的赞赏)。
为什么不禁用右键单击:
重要说明:是否允许这种预防取决于浏览器和OS!
你应该做吗? 没有。因为这不会阻止用户,但只会使他/她烦恼。
可以使用吗? 是的。示例:在某些您想要具有自定义弹出菜单的Web应用程序中,在游戏中用户可能会因误单击鼠标右键而惹恼用户,以及其他情况。
铬(V65)在Ubuntu 16.04 =你CAN禁用右键单击。
Mac OS 10.11中的Chrome(v65)=您无法禁用右键单击。
Windows 7中的Chrome(v65)=您无法禁用右键单击。
火狐(V41)中的Mac OS 10.11 =你CAN禁用右键单击。
火狐(V43)在Windows 7 =你CAN禁用右键单击。
// Vanilla JS way
document.addEventListener('contextmenu', function(e){
e.preventDefault();
});
// jQuery way
$(document).bind('contextmenu', function(e) {
e.preventDefault();
});
需要考虑的几件事:
Chrome浏览器中的“允许右键单击”之类的浏览器插件存在是有原因的,您将无法解决它们。您根本无法采取任何措施阻止人们下载您的内容,因为他们实际上必须下载内容才能在浏览器中看到它们。人们尝试,但它总是在那里。
通常,如果内容不应该公开,则不要将其放在网上。
同样,无法右键单击也是可访问性问题,在许多情况下,这会构成对盲人,残疾人或老人的非法歧视。请查看您当地的法律,但在美国,它会以联邦ADA的形式积极违反法律,因为可能有视力问题的盲人或老年人是受法律保护的阶层。
因此,不要这样做,并且要浪费大量的时间和精力,甚至不必费心尝试这样做。它可能只是使您的公司受到起诉,或者使他们未能通过合规性审核。
尝试使用此代码禁用检查元素选项
jQuery(document).ready(function() {
function disableSelection(e) {
if (typeof e.onselectstart != "undefined") e.onselectstart = function() {
return false
};
else if (typeof e.style.MozUserSelect != "undefined") e.style.MozUserSelect = "none";
else e.onmousedown = function() {
return false
};
e.style.cursor = "default"
}
window.onload = function() {
disableSelection(document.body)
};
window.addEventListener("keydown", function(e) {
if (e.ctrlKey && (e.which == 65 || e.which == 66 || e.which == 67 || e.which == 70 || e.which == 73 || e.which == 80 || e.which == 83 || e.which == 85 || e.which == 86)) {
e.preventDefault()
}
});
document.keypress = function(e) {
if (e.ctrlKey && (e.which == 65 || e.which == 66 || e.which == 70 || e.which == 67 || e.which == 73 || e.which == 80 || e.which == 83 || e.which == 85 || e.which == 86)) {}
return false
};
document.onkeydown = function(e) {
e = e || window.event;
if (e.keyCode == 123 || e.keyCode == 18) {
return false
}
};
document.oncontextmenu = function(e) {
var t = e || window.event;
var n = t.target || t.srcElement;
if (n.nodeName != "A") return false
};
document.ondragstart = function() {
return false
};
});
使用该功能可以禁用右键click.You可以通过禁用左键和自来水也checking 1 and 0
相应
document.onmousedown = rightclickD;
function rightclickD(e)
{
e = e||event;
console.log(e);
if (e.button == 2) {
//alert('Right click disabled!!!');
return false; }
}