如何禁用右键点击我的网页?
我可以禁用右键单击我的网页上,而不使用JavaScript? 我问这是因为大多数浏览器允许用户禁用JavaScript。
如果不是,我该如何使用JavaScript禁用右键点击?
您可以通过为“contextmenu”事件添加事件侦听器并调用preventDefault()
方法来使用JavaScript:
document.addEventListener('contextmenu', event => event.preventDefault());
这就是说: 不要这样做。
为什么? 因为除了令人讨厌的用户之外,它什么都不是。 另外,许多浏览器都有一个安全选项来禁止禁用右键单击(上下文)菜单。
不知道为什么你想要。 如果出于某种错误的想法,你可以用这种方式保护你的源代码或图像,那么再想一想:你不能。
别
只是,不要。
不pipe你做什么,你都不能阻止用户完全访问你网站上的每一点数据。 任何JavaScript代码都可以通过closures浏览器上的Javascript(或使用NoScript插件)来呈现。 此外,没有办法禁用任何用户只能为您的网站“查看源代码”或“查看页面信息”(或使用wget)的能力。
这是不值得的努力。 它实际上不会工作。 这会使你的网站主动对用户产生敌意。 他们会注意到这一点,并停止访问。 这样做没有任何好处,只会浪费精力和stream量。
别。
更新:似乎这个小话题已经certificate了相当有争议的一段时间。 即便如此,我仍然坚持这个问题的答案。 有时候,正确的答案是build议,而不是字面上的答复。
绊倒这个问题的人希望find如何创build自定义的上下文菜单应该看看别处,比如这些问题:
- 为我的web应用程序 (依赖于jQuery) 自定义右键单击上下文菜单
- 如何将自定义右键单击菜单添加到使用纯JavaScript / html 的网页
原来的问题是关于如何停止右键单击,因为用户可以禁用JavaScript :哪个声音恶毒和邪恶(因此消极的反应) – 但所有重复的redirect在这里,即使许多重复的要求较less的恶意目的。
例如,使用HTML5游戏中的右键单击button。 这可以用上面的内联代码完成,或者更好的是这样的:
document.addEventListener("contextmenu", function(e){ e.preventDefault(); }, false);
但是,如果您正在制作游戏,请记住右键单击button会触发contextmenu事件 – 但它也会触发常规的mousedown和mouseup事件。 所以你需要检查事件的属性,看它是左边的(哪个=== 1),中间的(哪个=== 2),或右边的(哪个=== 3)鼠标button触发事件。
下面是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); } });
所以如果你在游戏中使用鼠标左键和右键,你必须在鼠标处理程序中做一些条件逻辑。
如果你是一个jquery粉丝,使用这个
$(function() { $(this).bind("contextmenu", function(e) { e.preventDefault(); }); });
如果您不关心每次尝试右键单击时都会提示用户,请尝试将其添加到您的身体标记中
<body oncontextmenu="return false;">
这将阻止对上下文菜单的所有访问(不仅仅是从鼠标右键,而是从键盘)。
但是,正如其他答案中提到的那样,添加右键单击禁用器确实没有意义。 任何具有基本浏览器知识的人都可以查看源代码并提取他们所需的信息。
如果您的目的是阻止人们能够下载您的图像,正如大多数人所说,禁用右键点击几乎是无效的。
假设你试图保护图像的替代方法是 –
使用Flash播放器,用户无法下载,但他们可以轻松地进行屏幕截图。
如果您想要更加尴尬,请将图像作为div的背景,包含透明图像,
<div style="background-image: url(YourImage.jpg);"> <img src="transparent.gif"/> </div>
将足以阻止你的图像的随意盗窃(见下面的示例),但与所有这些技术一样,通过对html的基本理解来击败是微不足道的。
首先,如果不使用客户端function,则无法实现此目的。 这是JavaScript运行的地方。
其次,如果您试图控制最终用户可以从您的网站使用什么,那么您需要重新思考如何显示该信息。 一个图像有一个公共URL,可以通过HTTP获取,而不需要浏览器。
身份validation可以控制谁有权访问哪些资源。
在图像中embedded水印可以certificate图像来自特定的人/公司。
在一天结束的时候,资源pipe理确实是用户/客户pipe理。
互联网的第一条规则,如果你不想要它,不公开!
互联网的第二条规则,如果你不想要它,不要把它放在互联网上!
如果不使用Javascript,你无法完成你所要求的。 您可以select使用的任何其他技术只能帮助组成服务器端的网页发送到浏览器。
没有好的解决scheme,没有Javascript没有解决scheme。
如果您的目标是禁止用户简单地保存图像,也可以检查点击的目标是否为图像,只在该情况下禁用右键单击。 所以右键点击可以用于其他目的。 从上面的代码采取:
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>
像下面这样做(它也适用于Firefox):
$(document).on("contextmenu",function(e){ if( e.button == 2 ) { e.preventDefault(); callYourownFucntionOrCodeHere(); } return true; });
把这段代码放到你页面的<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。
当然,根据这里的所有其他评论,这根本不起作用。
我曾经为一个客户端构build了一个简单的java小应用程序,通过屏幕捕获来强制捕获一个图像,您可能会考虑类似的技术。 它在限制内工作,但我仍然认为这是浪费时间。
<script> window.oncontextmenu = function () { console.log("Right Click Disabled"); return false; } </script>
尝试这个
<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>
$(document).ready(function () { document.oncontextmenu = document.body.oncontextmenu = function () { return false; } });
我知道我迟到了,但是我想为我将要提供的答案创造一些假设和解释。
我可以禁用右键单击
我可以禁用右键点击我的网页,而不使用Javascript?
是的,通过使用JavaScript,您可以禁用发生的任何事件,而且大多数情况下只能通过javaScript来完成。 如何,你需要的是:
-
一个工作的硬件
-
一个网站或从哪个地方你可以了解的关键代码。 因为你会需要他们。
现在让我们说你想阻止input键按这里是代码:
function prevententer () { if(event.keyCode == 13) { return false; } }
对于右键点击使用这个:
event.button == 2
代替event.keyCode
。 你会阻止它。
我想问这是因为大多数浏览器允许用户通过Javascript禁用它。
你是对的,浏览器允许你使用JavaScript
和JavaScript为你完成整个工作。 你不需要设置任何东西,只需要在头部的脚本属性。
为什么你不应该禁用它?
主要的和快速的答案是, 用户不会喜欢它 。 每个人都需要自由,没有人是我想说的,没有人愿意被阻止或者被禁用,几分钟前我在一个网站,阻止了我的右键点击,我感觉到为什么? 你需要保护你的源代码吗? 然后在这里按ctrl+shift+J
我打开了Console
,现在我可以去HTML-code
选项卡。 来吧,阻止我。 这不会将任何安全层添加到您的应用程序。
右键单击中有很多用户菜单,例如复制,粘贴,searchGoogle文本(在Chrome中)等等。 所以用户想要轻松访问,而不是记住很多键盘快捷键。 任何人都可以复制上下文,保存图像或做任何他想做的事情。
浏览器使用鼠标导航:一些浏览器,如Opera使用鼠标导航,所以如果你禁用它,用户肯定会讨厌你的用户界面和脚本。
所以这是基本的,我将要写更多关于保存源代码hehehe,但是,让它成为你的问题的答案。
参考键码:
键和鼠标button代码:
http://www.w3schools.com/jsref/event_button.asp
https://developer.mozilla.org/en-US/docs/Web/API/event.button (也会受到用户的赞赏)。
为什么不禁用右键单击:
如果你正在使用jQuery,你可以试试这个代码:
$(document).bind("contextmenu", function (event) { event.preventDefault(); ));
看看这个: http : //www.landcoder.com/4-dynamic-interactive-code-snippets-jquery-705#disablerightclick
使用Javascript:
document.getElementsByTagName("html")[0].setAttribute("oncontextmenu", "return false");
在网站中禁用右键点击:
<body oncontextmenu="return false">
或者下一个方法是:
<style> body { -webkit-user-select: none; /* Chrome all / Safari all */ -o-user-select: none; user-select: none; -webkit-touch-callout:none; } </style>
禁用右键点击您的网页很简单。 只有几行JavaScript代码可以完成这项工作。 以下是JavaScript代码:
$("html").on("contextmenu",function(e){ return false; });
在上面的代码中,我select了标签。 添加这三行代码后,它将禁用右键单击您的网页。
来源: 禁用右键单击,使用jQuery复制,剪切网页