【问题标题】:How to disable mouse right click on a web page? [duplicate]如何禁用鼠标右键单击网页? [复制]
【发布时间】:2010-06-21 10:20:32
【问题描述】:

我想禁用鼠标右键单击 HTML 页面。 我有一个页面,用户必须在其中输入详细信息。 我不希望用户看到通过鼠标右键单击显示的菜单。相反,我想显示一个自定义菜单。我知道有一些插件可以做到这一点。但我的要求不需要任何插件。

【问题讨论】:

  • 菜单有什么问题?它属于用户,所以留给他。 想象一下,用户不理解某个单词并想要使用一些可通过上下文菜单访问的翻译服务。
  • 为什么要这样做?如果页面不能像所有其他网页一样工作,许多用户会感到困惑。
  • 任何可以被某人看到、听到或运行的文件都可以被同一个人复制。你无法阻止它,对于网页和图像,你甚至不能让它变得困难——查看你的页面的行为会在用户的计算机,几乎在所有浏览器中。
  • 请不要执行此操作。这真是令人难以置信的烦人。
  • 我正在为学生(3-12 年级)编写一个网络应用程序来了解科学。在现场测试中,我观察到测试它的三年级学生总是不小心右键单击并调出上下文菜单。它分散了他们对内容的注意力。因此,对于所有认为任何人这样做的充分理由为零并且对该问题投反对票的所有人来说,你错了。

标签: javascript html mouse right-click


【解决方案1】:

这是不专业的,无论如何这将在启用 javascript 的情况下工作:

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

您可能还想在返回 false 之前向用户显示一条消息。

但是我不得不说一般不应该这样做,因为它限制了用户的选项而没有解决问题(实际上上下文菜单可以很容易地再次启用。)。

以下文章更好地解释了为什么不应该这样做以及可以采取哪些其他措施来解决常见的相关问题: http://articles.sitepoint.com/article/dont-disable-right-click

【讨论】:

  • 此外,这不是一个包罗万象的解决方案,他们可以禁用 js 和嘿 presto。
  • 为什么不直接document.oncontextmenu = function () { return false; }
【解决方案2】:

首先,如果您这样做只是为了防止人们查看您网页的源代码 - 它是行不通的,因为他们总是可以使用键盘快捷键来查看它。

其次,您必须使用 JavaScript 来完成此操作。如果用户禁用了 JS,则无法阻止右键单击。

也就是说,将此添加到您的 body 标签以禁用右键单击。

<body oncontextmenu="return false;">

【讨论】:

    【解决方案3】:

    &lt;body oncontextmenu="return false;"&gt; 在 Google Chrome 中为我工作。不确定其他浏览器。

    注意,只要禁用 JavaScript 就可以看到右键菜单。

    【讨论】:

      【解决方案4】:

      您可以使用oncontextmenu 事件来执行此操作。

      但是如果用户关闭了 javascript,那么你将无法处理这个问题。

      window.oncontextmenu = function () {
         return false;
      }
      

      将禁用右键菜单。

      【讨论】:

        【解决方案5】:

        有很多这样的例子可以通过Google找到

        但是,用户可以关闭 Javascript 来停止这个非常烦人的“功能”。我认为您应该在实施之前真正考虑一下。它并不能真正保护您的内容(如果这是您想要实现的目标)。

        有一篇文章here 说明了它是多么令人讨厌和毫无意义。

        【讨论】:

          【解决方案6】:

          请不要这样做,这很烦人。

          右侧菜单的存在是有原因的,它应该留在那里。 许多浏览器扩展在右键菜单中添加条目,用户应该能够在他访问的任何页面中使用它。

          此外,您还可以通过其他方式(键盘快捷键、浏览器菜单等)使用右键菜单的所有功能,因此阻止右键菜单只会让用户感到厌烦。

          PS:如果你真的无法抗拒阻止它的冲动,至少不要弹出“不允许右键单击”的弹出窗口。

          【讨论】:

          • -1:虽然这有一些好处,但它不能回答问题,所以应该发表评论。
          • @David Dorward:它确实回答了这个问题。我是说虽然他可以阻止右键菜单的出现,但实际上无法阻止其功能,因为它们可以通过其他方式访问。阻止右键单击菜单是不好的做法,所以我发现这是一个更好的答案来解释他为什么不应该这样做。
          【解决方案7】:

          您可以使用 Javascript 和/或 HTML 属性(无论如何它实际上是一个 Javascript 事件处理程序)来执行此操作,如下所述:http://www.codeproject.com/KB/aspnet/Disabling_the_right_click.aspx

          <script language="javascript">
          document.onmousedown=disableclick;
          status="Right Click Disabled";
          Function disableclick(event)
          {
            if(event.button==2)
             {
               alert(status);
               return false;    
             }
          }
          </script>
          

          <body oncontextmenu="return false">
          ...
          </body>
          

          【讨论】:

            【解决方案8】:
            window.oncontextmenu = function () {
            return false;
            }
            

            可能会对你有所帮助。

            【讨论】:

              【解决方案9】:

              试试这个:在 body 上写下下面的代码,感受一下它的魔力 :)

              body oncontextmenu="return false"
              

              【讨论】:

                【解决方案10】:

                //通过java脚本代码禁用右键脚本

                <script language=JavaScript>
                //Disable right click script
                var message = "";
                ///////////////////////////////////
                function clickIE() {
                    if (document.all) {
                        (message);
                        return false;
                    }
                }
                
                function clickNS(e) {
                    if (document.layers || (document.getElementById && !document.all)) {
                        if (e.which == 2 || e.which == 3) {
                            (message);
                            return false;
                        }
                    }
                }
                if (document.layers) {
                    document.captureEvents(Event.MOUSEDOWN);
                    document.onmousedown = clickNS;
                } else {
                    document.onmouseup = clickNS;
                    document.oncontextmenu = clickIE;
                }
                
                document.oncontextmenu = new Function("return false")
                </script>
                

                Click here to see semo

                【讨论】:

                  猜你喜欢
                  • 2011-07-19
                  • 1970-01-01
                  • 2016-03-21
                  • 1970-01-01
                  • 2012-12-25
                  • 2012-12-17
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多