首页 文章

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

提问于
浏览
257

我可以在不使用JavaScript的情况下禁用右键单击我的网页吗?我问这个是因为大多数浏览器允许用户禁用JavaScript .

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

23 回答

  • 3
    <!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>
    
  • 14

    这样做如下(它也适用于Firefox):

    $(document).on("contextmenu",function(e){
    
         if( e.button == 2 ) {
             e.preventDefault();
              callYourownFucntionOrCodeHere();
         }
    return true;
    });
    
  • 20

    禁用网站右键单击:

    <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>
    
  • 119

    您可以通过为"contextmenu"事件添加事件侦听器并调用preventDefault()方法来使用JavaScript:

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

    话虽如此: DON'T DO IT.

    为什么?因为它除了烦人的用户之外别无他法 . 此外,许多浏览器都有一个安全选项,禁止禁用右键单击(上下文)菜单 .

    不知道为什么你想要 . 如果出于某种错误的信念,你可以用这种方式保护你的源代码或图像,那就再想一想:你做不到 .

  • 3

    DON'T

    只是,不要 .

    无论您做什么,都无法阻止用户完全访问您网站上的所有数据 . 您编写的任何Javascript都可以通过简单地在浏览器上关闭Javascript(或使用像NoScript这样的插件)来实现 . 此外,没有办法禁止任何用户只为您的网站“查看来源”或“查看页面信息”(或使用wget) .

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

    别 .

    Update: 似乎这个小话题随着时间的推移已经证明是非常有争议的 . 即便如此,我仍然坚持这个问题的答案 . 有时,正确的答案是建议而不是文字回答 .

    想要找到如何创建自定义上下文菜单的人偶然发现这个问题应该在其他地方寻找,例如这些问题:

  • 31

    最初的问题是关于如何停止右键单击,因为用户可以禁用JavaScript:这听起来是恶毒和邪恶的(因此是否定的反应) - 但是所有重复都重定向到这里,即使许多副本都要求不那么邪恶的目的 .

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

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

    但是如果你正在制作游戏,那么请记住右键单击按钮会触发contextmenu事件 - 但它也会触发常规的mousedown和mouseup事件 . 因此,您需要检查事件的 which 属性,以查看它是触发事件的左侧(=== 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); 
        }
    });
    

    因此,如果您在游戏中使用鼠标左键和右键,则必须在鼠标处理程序中执行一些条件逻辑 .

  • 0

    如果您不想在每次尝试右键单击时向用户发出警告,请尝试将其添加到您的正文标记中

    <body oncontextmenu="return false;">
    

    这将阻止对上下文菜单的所有访问(不仅来自鼠标右键,还来自键盘) .

    但是,正如其他答案中所提到的,添加右键禁用器确实毫无意义 . 具有基本浏览器知识的任何人都可以查看源并提取他们所需的信息 .

  • 4

    如果你是一个jquery粉丝,请使用它

    $(function() {
            $(this).bind("contextmenu", function(e) {
                e.preventDefault();
            });
        });
    
  • 9

    如果您的目标是阻止人们下载您的图像,正如大多数人所说的那样,禁用右键单击几乎是无效的 .

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

    使用Flash播放器,用户无法下载它们,但他们可以轻松地进行屏幕捕获 .

    如果你想更加笨拙,可以将图像作为div的背景,包含透明图像,àla -

    <div style="background-image: url(YourImage.jpg);">
       <img src="transparent.gif"/>
    </div>
    

    将足以阻止您的图像随意盗窃(见下面的示例),但与所有这些技术一样,通过对html的基本理解而失败是微不足道的 .

  • 27

    首先,如果不使用客户端功能,则无法实现此目的 . 这是javascript运行的地方 .

    其次,如果您试图控制最终用户可以从您的站点使用的内容,那么您需要重新考虑如何显示该信息 . 图像具有可以通过HTTP获取的公共URL,而无需浏览器 .

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

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

    在一天结束时,资源管理实际上是用户/客户管理 .

    互联网的第一条规则,如果你不想要它,不要公开它!

    互联网的第二条规则,如果你不想要它,不要把它放在互联网上!

  • 12

    如果不使用Javascript,你无法完成你所要求的 . 您可以选择使用的任何其他技术只能帮助撰写服务器端的网页以发送给浏览器 .

    根本没有好的解决方案,没有Javascript也没有解决方案 .

  • 2

    如果您的目标是禁止用户只是保存图像,您还可以检查点击的目标是否是图像,只有在这种情况下禁用右键单击 . 因此,右键单击可用于其他目的 . 取自上面的代码:

    document.addEventListener("contextmenu", function(e){
        if (e.target.nodeName === "IMG") {
            e.preventDefault();
        }
    }, false);
    

    这只是为了消除保存图像的最简单方法,但它仍然可以完成 .

  • 2

    当然,根据这里的所有其他评论,这根本不起作用 .

    我曾经为客户构建了一个简单的Java applet,它强制通过屏幕捕获完成对图像的任何捕获,你可能想要考虑类似的技术 . 它在限制范围内有效,但我仍然认为这是浪费时间 .

  • 418

    将此代码放入页面的 <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时 .

  • 1
    <script>
            window.oncontextmenu = function () {
                console.log("Right Click Disabled");
                return false;
            }
        </script>
    
  • 64

    Try This

    <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>
    
  • 2

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

    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>
    
  • 6
    $(document).ready(function () {
                document.oncontextmenu = document.body.oncontextmenu = function () { return false; }
            });
    
  • 1

    我知道我迟到了,但我想为我要提供的答案创建一些假设和解释 .

    我可以禁用右键单击

    我可以在不使用Javascript的情况下禁用右键单击我的网页吗?

    是的,通过使用JavaScript,您可以禁用发生的任何事件,并且您可以主要仅通过javaScript执行此操作 . 怎么样,你需要的是:

    • 一个工作硬件

    • 一个网站或某个地方,您可以从中了解密钥代码 . 因为你需要它们 .

    现在让我们说你想要阻止输入键按下这里是代码:

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

    右键单击使用此:

    event.button == 2
    

    取代 event.keyCode . 你会阻止它 .

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

    你是对的,浏览器允许你使用 JavaScript 并且javascript为你完成整个工作 . 你不需要设置任何东西,只需要头部的脚本属性 .

    为什么你不应该禁用它?

    主要和快速的答案是, users won't like it . 每个人都需要自由,没有人我的意思是没有人想要被阻止或禁用,几分钟前我在一个网站,这阻止了我点击右键,我觉得为什么?您需要保护源代码吗?然后在这里 ctrl+shift+J 我打开了 Console 现在我可以去 HTML-code 标签了 . 来吧,阻止我 . 这不会为您的应用添加任何安全层 .

    右键单击中有很多用户菜单,如复制,粘贴,搜索谷歌搜索“文本”(在Chrome中)等等 . 因此,用户希望轻松访问,而不是记住很多键盘快捷键 . 任何人仍然可以复制上下文,保存图像或做任何他想做的事情 .

    Browsers use Mouse Navigation: 某些浏览器(如Opera)使用鼠标导航,因此如果禁用它,用户肯定会讨厌您的用户界面和脚本 .

    所以这是基本的,我打算写一些关于保存源代码的更多信息,但是,让它成为你问题的答案 .

    参考密钥代码:

    Key and mouse button code:

    http://www.w3schools.com/jsref/event_button.asp

    https://developer.mozilla.org/en-US/docs/Web/API/event.button(也会得到用户的赞赏) .

    Why not to disable right click:

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

  • 3

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

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

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

    资料来源:Disable right click, copy, cut on web page using jQuery

  • 16

    如果您使用的是jquery,可以尝试以下代码:

    $(document).bind("contextmenu", function (event) {
      event.preventDefault();
    ));
    

    看看这个:http://www.landcoder.com/4-dynamic-interactive-code-snippets-jquery-705#disablerightclick

  • 4

    使用Javascript:

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

    Important Note: 这取决于 browserOS 是否允许这样的预防!

    Should you do it? No . 因为它不会阻止用户,但它只会让他/她烦恼 .

    Can you use it? Yes . 示例:在某些您希望拥有自定义弹出菜单的网络应用程序中,游戏中用户可能会因为错误地右键单击而烦恼,以及其他情况 .

    Ubuntu 16.04中的Chrome(v65)=您 CAN 禁用右键单击 .

    Mac OS 10.11中的Chrome(v65)=您 CAN NOT 禁用右键单击 .

    Windows 7中的Chrome(v65)=您 CAN NOT 禁用右键单击 .

    Mac OS 10.11中的Firefox(v41)=您 CAN 禁用右键单击 .

    Windows 7中的Firefox(v43)=您 CAN 禁用右键单击 .

    // JS way
    document.addEventListener('contextmenu', function(e){
        e.preventDefault();
    });
    
    // jQuery way
    $(document).bind('contextmenu', function(e) {
        e.preventDefault();
    });
    

相关问题