两种JS实现屏蔽鼠标右键的方法

当我们开发网页时,有时为了保护自己的作品,需要对网页进行一些防抄袭的处理。其中一种处理方式就是禁止用户使用鼠标右键,以避免用户通过浏览器来获取或者篡改页面源代码,接下来,我将为大家介绍两种JS实现屏蔽鼠标右键的方法。

方法一:使用DOM API禁用鼠标右键

这种方式利用了不同浏览器对于事件对象eventbutton属性值的不同解析,从而达到禁用鼠标右键的目的。方法如下:

 document.oncontextmenu = function(event){
     if (window.Event) {
         if (event.which == 2 || event.which == 3) {
             return false;
         }
     }
     else {
         if (event.button == 2 || event.button == 3) {
             event.cancelBubble = true;
             event.returnValue = false;
             return false;
         }
     }
 }

以上代码中,我们监听了DOM对象上的oncontextmenu事件,当用户右击鼠标时,便会触发此事件,我们在事件处理函数中,判断事件对象event中的鼠标键位。当键位为2(在多数浏览器中代表鼠标右键)或3(在MacOS中代表鼠标右键),便禁用此事件并返回false,从而屏蔽了鼠标右键。

方法二:阻止原生右键菜单事件

这种方式在用户右击鼠标时,弹出自定义菜单,并且屏蔽了原生的右键菜单。代码如下:

document.addEventListener('contextmenu', function (event) {
    var popmenu = document.getElementById('popmenu'); // 获取自定义菜单
    event.preventDefault(); // 阻止默认的右键菜单事件
    popmenu.style.display = 'block'; // 展示自定义菜单
    popmenu.style.left = event.clientX + 'px';
    popmenu.style.top = event.clientY + 'px';
});

在代码中,我们监听了DOM对象上的contextmenu事件,当用户右击鼠标时,便会触发此事件,我们在事件处理函数中,首先使用preventDefault()方法阻止了默认的右键菜单事件。随后,我们获取自定义的菜单元素,并使其显示出来,并将其位置定位到事件对象event的点击位置。

这种方式需要注意的是,由于屏蔽了原生的右键菜单事件,因此我们需要通过JS代码来实现自定义的右键菜单,才能达到用户体验上更好的效果。

以上是两种JS实现屏蔽鼠标右键的方法,鉴于在实际开发中这种方式被视为一种“伪保护”,因此再次提醒开发者,应该寻求更加全面更加妥善的保护措施。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:两种JS实现屏蔽鼠标右键的方法 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 简单了解spring bean作用域属性singleton和prototype的区别

    简单了解Spring Bean作用域属性singleton和prototype的区别 在Spring框架中,Bean的作用域属性定义了Bean实例的生命周期和可见性。Spring提供了多种作用域属性,其中最常用的是singleton和prototype。下面将详细讲解这两种作用域属性的区别,并提供两个示例说明。 Singleton作用域 Singleton作…

    other 2023年8月19日
    00
  • jQuery 开发之EasyUI 添加数据的实例

    EasyUI 添加数据的实例 本文将详细讲解如何使用 jQuery EasyUI 框架实现添加数据的功能。 1.准备环境 首先需要在网站中引入 EasyUI 的相关资源文件: <head> <meta charset="UTF-8"> <title>EasyUI 添加数据的实例</title&gt…

    other 2023年6月27日
    00
  • vue-cli3.0 特性解读

    Vue CLI 3.0 特性解读 Vue CLI 3.0 是一个基于 Vue.js 的官方脚手架工具,它提供了一套完整的开发环境,帮助开发者快速搭建 Vue.js 项目。下面将详细解读 Vue CLI 3.0 的特性,并提供两个示例说明。 1. 配置文件可视化 Vue CLI 3.0 引入了一个全新的可视化配置文件,使得开发者可以直观地配置项目。通过运行 v…

    other 2023年7月29日
    00
  • pip安装yaml

    以下是安装yaml模块的完整攻略,包括两个示例说明。 步骤 以下是安装yaml模块的基本步骤: 确认已安装pip。 在终端中输入pip –version如果输出pip的版本信息,则说明pip已安装。如果未安装,可以参考pip官方文档进行安装。 安装yaml模块。 在终端中输入pip install pyyaml,等待安装完成。 验证安装。 在终端中输入py…

    other 2023年5月6日
    00
  • 深入解析MS-SQL锁机制

    深入解析 MS-SQL 锁机制 什么是锁机制 MS-SQL锁机制是指在多个会话同时访问同一数据库资源时,由数据库管理系统负责协调控制对该资源的访问。其目的是确保数据库的一致性和完整性,防止数据冲突和数据损坏。 锁的类型 MS-SQL提供了多种锁类型,包括共享锁、排他锁、意向共享锁、意向排他锁等等。下面将分别对这些锁类型进行介绍。 共享锁 共享锁(Shared…

    other 2023年6月27日
    00
  • grafana设置中文

    Grafana设置中文 Grafana是一个流行的开源数据可视化平台,它可以帮助用户快速、方便地可视化数据。然而,在默认情况下,Grafana使用英文作为其用户界面语言。对于非英语用户来说,这可能会造成一些不便。幸运的是,Grafana提供了设置中文的选项,下面就让我们来详细了解一下如何进行设置。 1. 下载中文语言包 首先,你需要从官方网站下载Grafan…

    其他 2023年3月29日
    00
  • javascript全局变量封装模块实现代码

    要实现“JavaScript全局变量封装模块”,有以下几步: 1. 创建命名空间 在JavaScript中,全局变量会污染整个命名空间,容易导致变量名冲突或覆盖。因此,我们需要创建一个命名空间,把全局变量封装在这个命名空间中。 var MyModule = {}; 2. 定义模块的变量和方法 在命名空间中定义一个对象,并把变量和方法添加到这个对象中。 var…

    other 2023年6月25日
    00
  • java判断包含contains方法的使用

    Java判断包含contains方法的使用 在Java中,我们经常需要判断一个字符串是否包含另一个字符串,例如在搜索引擎中搜索关键字,判断一个字符串中是否包含特定的词汇等等。Java中提供了contains方法来实现这个功能。 contains方法 contains方法是Java中String类提供的方法,主要用于判断一个字符串是否包含另一个字符串。该方法返…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部