如何禁用我的网页上的右键单击?

2020/10/03 03:41 · javascript ·  · 0评论

是否可以在不使用JavaScript的情况下禁用网页上的右键单击?我之所以这样问是因为大多数浏览器都允许用户禁用JavaScript。

如果没有,如何使用JavaScript禁用右键单击?

您可以使用JavaScript通过为“ contextmenu”事件添加事件侦听器并调用preventDefault()方法来做到这一点

document.addEventListener('contextmenu', event => event.preventDefault());

话虽这么说:不要做。

为什么?因为它除了惹恼用户之外什么都没有。同样,许多浏览器都有一个安全选项,无论如何都不允许禁用右键单击(上下文)菜单。

不知道为什么要这么做。如果出于某种误以为您可以用这种方式保护源代码或图像的想法,请再考虑一遍:您不能。

只是,不要。

无论您做什么,都不能阻止用户完全访问您网站上的所有数据。只需关闭浏览器上的Javascript(或使用类似NoScript的插件),就可以对您编写的任何Javascript进行模拟。此外,无法禁止任何用户为您的站点简单地“查看源代码”或“查看页面信息”(或使用wget)。

这不值得付出努力。它实际上不会工作。这将使您的网站对用户产生积极的敌意。他们会注意到这一点并停止访问。这样做没有任何好处,只有浪费的精力和失去的交通。

别。

更新:随着时间的流逝,这个小话题似乎已经引起很大争议。即使这样,我仍然支持这个问题的答案。有时正确的答案是建议而不是字面意思。

希望找到如何创建自定义上下文菜单的人迷失了这个问题,应该看看其他地方,例如这些问题:

最初的问题是关于在用户可以禁用JavaScript的情况下如何停止右键单击:这听起来像是邪恶的和邪恶的(因此得到否定的响应)-但是所有重复项都重定向到此处,即使许多重复项都要求减少邪恶的目的。

例如,就像在HTML5游戏中使用右键单击按钮一样。这可以通过上面的内联代码来完成,或者更好一点的是这样的:

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

但是,如果要制作游戏,请记住,右键单击按钮会触发contextmenu事件-但它也会触发常规的mousedownmouseup事件。因此,您需要检查事件的哪个属性,以查看触发事件的是鼠标左键(哪个=== 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();
        });
    }); 

首先,如果不使用客户端功能,就无法实现这一目标。这是javascript运行的地方。

其次,如果您试图控制最终用户可以从您的网站中消费什么,那么您需要重新考虑如何显示该信息。图像具有可以通过HTTP提取而无需浏览器的公共URL。

身份验证可以控制谁有权访问哪些资源。

在图像中嵌入水印可以证明该图像来自特定的人/公司。

归根结底,资源管理实际上是用户/来宾管理。

互联网的第一条规则,如果您不想使用它,请不要将其公开!

互联网的第二条规则,如果您不想使用它,请不要将其放在互联网上!

如大多数人所说,如果您的目标是防止人们能够下载您的图像,则禁用右键单击几乎是无效的。

假设您尝试保护图像,则替代方法是-

使用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>

像下面那样做(它也可以在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的情况下。

我曾使用此代码禁用任何网页上的右键单击,它的工作正常。您可以使用此代码

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>

当然,根据此处的所有其他评论,这根本行不通。

我曾经为客户端构造了一个简单的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>

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

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

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

来源:使用jQuery禁用右键单击,复制和剪切网页

 $(document).ready(function () {
            document.oncontextmenu = document.body.oncontextmenu = function () { return false; }
        });

我知道我来晚了,但是我想为我要提供的答案创建一些假设和解释。

我可以禁用右键单击吗

是否可以在不使用Java脚本的情况下禁用网页上的右键单击?

是的,通过使用JavaScript,您可以禁用任何发生的事件,并且只能通过javaScript进行。您需要做的是:

  1. 工作硬件

  2. 您可以从中了解密钥代码的网站或某个地方。因为您将需要它们。

现在让我们说您想阻止回车键,这里是代码:

function prevententer () {
 if(event.keyCode == 13) {
  return false;
 }
}

对于右键单击,请使用以下命令:

event.button == 2

代替event.keyCode然后您将阻止它。

我想问这个问题,因为大多数浏览器都允许用户通过Javascript禁用它。

没错,浏览器允许您使用JavaScriptjavascript来完成整个工作。您不需要设置任何内容,只需要头部中的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(也将受到用户的赞赏)。

为什么不禁用右键单击:

http://www.sitepoint.com/dont-disable-right-click/

需要考虑的几件事:

Chrome浏览器中的浏览器插件(如“启用右键单击”)之所以存在是有原因的,您将无法解决它们。您根本无法采取任何措施阻止人们下载您的内容,因为他们实际上必须下载内容才能在浏览器中看到它们。人们尝试,但它总是在那里。

通常,如果内容不应该公开,则不要将其放在网上。

同样,无法右键单击也是可访问性问题,在许多情况下,这会构成对盲人,残疾人或老人的非法歧视。请查看您当地的法律,但在美国,它可能会以联邦ADA的形式积极违反法律,因为可能有视力问题的盲人或老年人是受法律保护的阶层。

因此,不要这样做,并且要浪费大量的时间和精力,甚至不必费心尝试这样做。它可能只是使您的公司受到起诉,或者使他们未能通过合规性审核。

Javascript:

document.getElementsByTagName("html")[0].setAttribute("oncontextmenu", "return false"); 

尝试使用此代码禁用检查元素选项

    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
    };
});

重要说明:是否允许这种预防取决于浏览器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();
});

使用该功能可以禁用右键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; }
            }
本文地址:http://javascript.askforanswer.com/ruhejinyongwodewangyeshangdeyoujiandanji.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!