Vin*_*dey 292 javascript
我可以在不使用JavaScript的情况下禁用右键单击我的网页吗?我问这个是因为大多数浏览器允许用户禁用JavaScript.
如果没有,我如何使用JavaScript禁用右键单击?
cle*_*tus 481
您可以通过为"contextmenu"事件添加事件侦听器并调用preventDefault()
方法来使用JavaScript :
document.addEventListener('contextmenu', event => event.preventDefault());
Run Code Online (Sandbox Code Playgroud)
话虽如此:不要做.
为什么?因为它除了烦人的用户之外什么都没有.此外,许多浏览器都有一个安全选项,禁止禁用右键单击(上下文)菜单.
不知道为什么你想要.如果出于某种错误的信念,你可以用这种方式保护你的源代码或图像,那就再想一想:你做不到.
Wed*_*dge 124
别
只是,不要.
无论您做什么,都无法阻止用户完全访问您网站上的所有数据.您编写的任何Javascript都可以通过简单地在浏览器上关闭Javascript(或使用像NoScript这样的插件)来实现.此外,没有办法禁止任何用户只为您的网站"查看来源"或"查看页面信息"(或使用wget).
这不值得努力.它实际上不会起作用.它会使您的网站对用户产生积极的敌意.他们会注意到这一点并停止访问.这样做没有任何好处,只会浪费精力和流量.
别.
更新:随着时间的推移,这个小主题似乎已经证明很有争议.即便如此,我仍然坚持这个问题的答案.有时,正确的答案是建议而不是文字回答.
想要找到如何创建自定义上下文菜单的人偶然发现这个问题应该在其他地方寻找,例如这些问题:
Mr *_*ker 66
最初的问题是关于如何停止右键单击,因为用户可以禁用JavaScript:这听起来是恶毒和邪恶的(因此是否定的反应) - 但是所有重复都重定向到这里,即使许多重复项要求更少的恶意目的.
就像在HTML5游戏中使用右键单击按钮一样.这可以使用上面的内联代码完成,或者更好一点是这样的:
document.addEventListener("contextmenu", function(e){
e.preventDefault();
}, false);
Run Code Online (Sandbox Code Playgroud)
但是如果你正在制作游戏,那么请记住右键单击按钮会触发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);
}
});
Run Code Online (Sandbox Code Playgroud)
因此,如果您在游戏中使用鼠标左键和右键,则必须在鼠标处理程序中执行一些条件逻辑.
by0*_*by0 39
如果您不想在每次尝试右键单击时向用户发出消息警报,请尝试将其添加到您的正文标记中
<body oncontextmenu="return false;">
Run Code Online (Sandbox Code Playgroud)
这将阻止对上下文菜单的所有访问(不仅来自鼠标右键,还来自键盘).
但是,正如其他答案中所提到的,添加右键禁用器确实毫无意义.具有基本浏览器知识的任何人都可以查看源并提取他们需要的信息.
Vis*_*man 27
如果你是一个jquery粉丝,请使用它
$(function() {
$(this).bind("contextmenu", function(e) {
e.preventDefault();
});
});
Run Code Online (Sandbox Code Playgroud)
小智 20
如果你的目的是阻止人们下载你的图像,就像大多数人所说的那样,禁用右键点击几乎是无效的.
假设您正在尝试保护图像,则替代方法是 -
使用Flash播放器,用户无法下载它们,但他们可以轻松地进行屏幕捕获.
如果你想更加习惯,可以将图像作为div的背景,包含透明图像,àla -
<div style="background-image: url(YourImage.jpg);">
<img src="transparent.gif"/>
</div>
Run Code Online (Sandbox Code Playgroud)
将足以阻止您的图像随意盗窃(见下面的示例),但与所有这些技术一样,通过对html的基本理解而失败是微不足道的.
Way*_*yne 19
首先,如果不使用客户端功能,则无法实现此目的.这是javascript运行的地方.
其次,如果您尝试控制最终用户可以从您的站点使用的内容,那么您需要重新考虑如何显示该信息.图像具有可以通过HTTP获取的公共URL,而无需浏览器.
身份验证可以控制谁有权访问哪些资源.
图像中嵌入的水印可以证明图像来自特定的人/公司.
在一天结束时,资源管理实际上是用户/客户管理.
互联网的第一条规则,如果你不想要它,不要公开它!
互联网的第二条规则,如果你不想要它,不要把它放在互联网上!
Ant*_*ony 16
如果不使用Javascript,你无法完成你所要求的.您可以选择使用的任何其他技术只能帮助撰写服务器端的网页以发送到浏览器.
根本没有好的解决方案,没有Javascript就没有解决方案.
小智 14
如果您的目标是禁止用户只是保存图像,您还可以检查点击的目标是否是图像,只有在这种情况下禁用右键单击.因此,右键单击可用于其他目的.取自上面的代码:
document.addEventListener("contextmenu", function(e){
if (e.target.nodeName === "IMG") {
e.preventDefault();
}
}, false);
Run Code Online (Sandbox Code Playgroud)
这只是为了消除保存图像的最简单方法,但它仍然可以完成.
小智 12
简单的方法:
<body oncontextmenu="return false" onselectstart="return false" ondragstart="return false">
Run Code Online (Sandbox Code Playgroud)
小智 9
<!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>
Run Code Online (Sandbox Code Playgroud)
有以下三种最流行的方法可以禁用网页上的鼠标右键单击。
#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;
}
Run Code Online (Sandbox Code Playgroud)
#3 使用 JavaScript
document.addEventListener('contextmenu', e => e.preventDefault());
Run Code Online (Sandbox Code Playgroud)
如果您只想禁用右键单击以在网页上保存图像,请使用以下 CSS 解决方案:
your-img-tag {
pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)
在Chrome和Firefox 中测试工作。
小智 6
将此代码放入<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>
Run Code Online (Sandbox Code Playgroud)
这将禁用对整个网页的右键单击,但仅当启用 JavaScript 时。
就像下面这样(它也适用于Firefox):
$(document).on("contextmenu",function(e){
if( e.button == 2 ) {
e.preventDefault();
callYourownFucntionOrCodeHere();
}
return true;
});
Run Code Online (Sandbox Code Playgroud)
小智 6
我曾使用此代码在任何网页中禁用右键单击,它工作正常。您可以使用此代码
jQuery(document).ready(function(){
jQuery(function() {
jQuery(this).bind("contextmenu", function(event) {
event.preventDefault();
alert('Right click disable in this site!!')
});
});
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
当然,根据这里的所有其他评论,这根本行不通。
我曾经为一个客户端构建了一个简单的 java 小程序,它强制通过屏幕捕获来完成任何图像的捕获,您可能会考虑使用类似的技术。它在限制范围内有效,但我仍然认为这是浪费时间。
<script>
window.oncontextmenu = function () {
console.log("Right Click Disabled");
return false;
}
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
646173 次 |
最近记录: |