如何使用 JavaScript/jQuery 禁用右键单击

要禁用页面上的右键单击,我们需要在事件处理程序中添加 oncontextmenu 事件和“返回 false”。
它将阻止通过鼠标右键单击对上下文菜单的所有访问。

例子

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
  </head>
  <body>
    <h2>Copy and cut disabled</h2>
    <p>I am a text and you cannot copy or cut me.</p>
    <script>
      $(document).ready(function() {
          $('body').bind('cut copy', function(e) {
              e.preventDefault();
            });
        });
    </script>
  </body>
</html>

使用 jQuery 函数 bind() 禁用右键单击功能。
此方法禁用文本字段上的右键单击(上下文菜单)功能,并通过弹出消息提醒用户。

例子

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
  </head>
  <body>
    <h2>Right-click disabled</h2>
    <p>For this page the right-click is disabled.</p>
    <script>
      $(document).ready(function() {
          $("body").on("contextmenu", function(e) {
              return false;
            });
        });
    </script>
  </body>
</html>

请记住,不可能以任何方式阻止文档中的文本提取(100% 安全),因为有多种方法可以检索内容,即浏览器开发人员控制台。

如何使用 JavaScript 禁用文本选择

将 onmousedown 和 onselectstart 事件应用于 <body> 或者 <div> 标签,以防止在上进行文本选择和复制/剪切。

它覆盖浏览器的默认行为。

例子

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
  </head>
  <body onmousedown="return false" onselectstart="return false">
    <h2>Unselectable text</h2>
    <p>经历过风雨,才懂得阳光的温暖。 生活本就是矛盾的,白天与黑夜间的距离,春夏秋冬之间的轮回,于是有了挑剔的喜爱,让无奈加上了喜悦的等待。
是谁把光阴剪成了烟花,一瞬间,看尽繁华。是谁把思念翻起了浪花,一转身,浪迹天涯。
</p>
  </body>
</html>

如何使用 JavaScript/jQuery 禁用复制、剪切和粘贴。

我们可以允许文本选择,但使用 oncopy、oncut 和 onpaste 事件属性阻止复制和剪切功能。

通过将这些属性添加到文本框的 <input> 标签中,我们可以禁用剪切、复制和粘贴功能。

用户可以选择手动输入设置了这些属性的字段。

例子

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
  </head>
  <body>
    <h2>Copy, cut and paste disabled</h2>
    <input type="text" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off/>
    <br>
  </body>
</html>

通过使用 jQuery bind() 函数指定用户剪切或者复制文本时触发的剪切和复制事件,可以实现相同的效果。

例子

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
  </head>
  <body>
    <h2>Copy and cut disabled</h2>
    <p>I am a text and you cannot copy or cut me.</p>
    <script>
      $(document).ready(function() {
          $('body').bind('cut copy', function(e) {
              e.preventDefault();
            });
        });
    </script>
  </body>
</html>

如何使用 CSS 禁用文本选择突出显示

使文本不可选择并不是一项艰巨的任务。
我们需要做的就是禁用可能加载网页的所有浏览器的文本选择性。

让我们看看不同浏览器使用哪些扩展来禁用文本的选择性。

  • Chrome、Opera(旧版本)、IOS Safari:-webkit-user-select
  • Safari:-webkit-touch-callout
  • Mozilla:-moz-user-select
  • KHTML 浏览器 (Konqueror):-khtml-user-select

Chrome 从 54.0 版本开始,Opera 从 41.0 版本开始支持 user-select 不带 -webkit- 前缀。

例子

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <style>
      .unselectable {
        -webkit-user-select: none;
        -webkit-touch-callout: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        color: #cc0000;
      }
    </style>
  </head>
  <body>
    <p>可以选择的文本</p>
    <div class="unselectable">无法选择的文本</div>
  </body>
</html>

如果我们需要禁用整个页面的文本选择,请将用户选择应用于 <body> 元素。

JS如何在网页上禁用文本选择、复制、剪切、粘贴和右键单击

在某些情况下,阻止选择网页的某些部分可能是有利可图的。

因为禁用用户选择非常烦人,所以最好不要为整个设置它。
相反,请禁用我们担心可能被盗的部分或者特定文章的文本选择。
在可以增强用户体验的情况下使用它。

无论在上禁用用户选择的原因是什么,如果我们已经到了那一步,那么这里就是学习如何使用 CSS、Javascript 和 jQuery 轻松实现这一点的正确地方。

日期:2020-06-02 22:16:16 来源:oir作者:oir