js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)

JS屏蔽鼠标键盘攻略

简介

对于一些需要保护网页内容的网站或者应用,我们常常需要使用JS技术来屏蔽一些危险操作,防止用户通过快捷键或者鼠标操作去获取或者修改网页信息。本篇文档将详细介绍JS屏蔽鼠标键盘相关的攻略。

屏蔽右键菜单

右键菜单屏蔽的操作是JS屏蔽功能中比较简单的一项,只需要在文档加载完成的时候为文档添加oncontextmenu事件,然后在该事件中阻止默认行为即可。代码示例如下:

document.oncontextmenu = function (e) {
  e.preventDefault(); // 阻止右键菜单的默认行为
}

屏蔽Ctrl+N和Shift+F10快捷键

Ctrl+N和Shift+F10快捷键的屏蔽需要使用onkeydown事件监听用户按键,当用户按下Ctrl+N或者Shift+F10时,JS代码阻止默认行为即可。代码示例如下:

document.onkeydown = function (e) {
  // 判断用户按下的键是否为Ctrl或者Shift
  if (e.ctrlKey || e.shiftKey) {
    // 判断用户按下的键是否为N或者F10
    if (e.keyCode === 78 || e.keyCode === 121) {
      e.preventDefault(); // 阻止浏览器执行默认行为
    }
  }
}

屏蔽F5刷新

F5刷新的屏蔽需要使用onbeforeunload事件,在用户关闭页面之前阻止页面刷新即可。代码示例如下:

window.onbeforeunload = function () {
  return "确定离开该页面吗?";
}

屏蔽退格键

退格键的屏蔽需要使用onkeydown事件监听用户按键,当用户按下退格键时,JS代码阻止默认行为即可。但是需要注意的是,在某些输入框中按下退格键是合法的操作,这种情况下就不能将其屏蔽掉。代码示例如下:

document.onkeydown = function (e) {
  // 判断按下的是不是退格键
  if (e.keyCode === 8) {
    // 判断当前焦点是否在可编辑区域中
    if (e.target.tagName !== "INPUT" && e.target.tagName !== "TEXTAREA") {
      e.preventDefault(); // 阻止浏览器执行默认行为
    }
  }
}

示例说明

下面我们通过两个实例来详细说明这些屏蔽功能如何实现。

示例一

需求:屏蔽右键菜单和F5刷新功能,防止用户复制和刷新网页。

实现步骤:
1. 在文档加载完成的时候,为文档添加oncontextmenu事件,阻止右键菜单的默认行为。
2. 在window对象上添加onbeforeunload事件,阻止页面刷新的默认行为。

代码示例:

document.addEventListener("DOMContentLoaded", function () {
  document.oncontextmenu = function (e) {
    e.preventDefault(); // 阻止右键菜单的默认行为
  }

  window.onbeforeunload = function () {
    return "确定离开该页面吗?";
  }
}, false);

示例二

需求:屏蔽鼠标、键盘相关操作,防止用户获取或者修改网页信息。

实现步骤:
1. 在文档加载完成的时候,为文档添加oncontextmenu事件,阻止右键菜单的默认行为。
2. 在window对象上添加onkeydown事件,阻止用户使用Ctrl+N和Shift+F10快捷键。
3. 在window对象上添加前置事件onbeforeunload,防止用户使用F5刷新。
4. 在document对象上添加onkeydown事件,阻止用户使用退格键。

代码示例:

document.addEventListener("DOMContentLoaded", function () {
  document.oncontextmenu = function (e) {
    e.preventDefault(); // 阻止右键菜单的默认行为
  }

  window.onbeforeunload = function () {
    return "确定离开该页面吗?";
  }

  window.onkeydown = function (e) {
    if (e.ctrlKey || e.shiftKey) {
      if (e.keyCode === 78 || e.keyCode === 121) {
        e.preventDefault(); // 阻止浏览器执行默认行为
      }
    }
  }

  document.onkeydown = function (e) {
    if (e.keyCode === 8) {
      if (e.target.tagName !== "INPUT" && e.target.tagName !== "TEXTAREA") {
        e.preventDefault(); // 阻止浏览器执行默认行为
      }
    }
  }
}, false);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键) - Python技术站

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

相关文章

  • 让你的QQ成为“精简”后的捍将—自定义QQ组件

    下面是让你的QQ成为“精简”后的捍将—自定义QQ组件的完整攻略。 什么是自定义QQ组件 QQ组件是指通过QQ的自定义功能,实现一些个性化的界面和功能,像主题、头像、资料卡、表情包等等,都可以进行自定义。自定义QQ组件是指自己编写插件或者下载别人的插件,来实现QQ界面和功能的修改。 如何自定义QQ组件 自定义QQ组件需要使用QQ自带的插件工具,它可以通过腾…

    other 2023年6月25日
    00
  • Android开发5:应用程序窗口小部件App Widgets的实现(附demo)

    首先,让我们概括一下“Android开发5:应用程序窗口小部件App Widgets的实现”的实现步骤: 了解App Widget的基本概念和工作原理; 创建App Widget Provider,并在AndroidManifest.xml中声明; 创建App Widget的布局文件; 创建App Widget更新的RemoteViews对象; 更新App …

    other 2023年6月25日
    00
  • 编写第一个ROS(创建工作空间workspace和功能包package)

    ROS(Robot Operating System)是一种用于机器人开发的开源框架。在ROS中,工作空间(workspace)是一个用于存储ROS功能包(package)的目录。本文将为您提供编写第一个ROS的完整攻略,包括创建工作空间和功能包的方法和示例。 创建工作空间 要创建ROS工作空间,您可以按照以下步骤进行操作: 创建一个名为“catkin_ws…

    other 2023年5月7日
    00
  • Android基于IJKPlayer视频播放器简单封装设计

    我来为你详细讲解“Android基于IJKPlayer视频播放器简单封装设计”的完整攻略。 一、概述 IJKPlayer是一款基于 FFmpeg 的高度定制化的多媒体播放框架,是 Android 平台上一款非常好用的音视频播放器,它支持几乎所有主流的音视频格式,且能够实时解码播放视频流,非常适合用来开发直播相关的应用。本文将会对 IJKPlayer 的基础使…

    other 2023年6月25日
    00
  • 关于wpf:textblock中的标签自动换行不起作用

    关于WPF TextBlock中的标签自动换行不起作用的攻略 在WPF中,TextBlock是一个常用的控件,用于显示文本。但是TextBlock中使用标签时,有时会出现标签自动换行不起作用的问题。攻略将详细介如何解决这个问题,并提供两个示例说明。 问题描述 在WPF TextBlock中使用标签时,有时会出现标签自动换行不起作用的问题。例如,下面的代码中,…

    other 2023年5月7日
    00
  • cod是什么意思?

    COD 是 Call of Duty (使命召唤)视频游戏系列的缩写,是一款著名的射击类游戏。 在游戏界和游戏玩家之间,COD 是一个非常常用的术语。玩家经常用它来讨论这款游戏,或者在社交媒体上分享他们玩这款游戏的经验。 一些示例: 1. COD 游戏系列 COD 是 Call of Duty 游戏系列的缩写。这个游戏系列从 2003 年以来一直存在,每年都…

    其他 2023年4月16日
    00
  • 三星A9star怎么重启?三星A9 star重启手机教程

    三星A9 star怎么重启? 重启三星A9 star可以解决某些问题,比如卡顿、应用程序无响应等现象。以下是三种重启方法: 方法一:软重启 软重启是安全的,可以尝试修复一些小问题,并不会丢失个人数据。 步骤1:按住音量减键和开关键,直到手机屏幕黑屏,手机立即关闭。 步骤2:按住电源键,使三星A9 star重新启动。 方法二:硬重启 硬重启比软重启更适合紧急情…

    other 2023年6月26日
    00
  • C++程序内存栈区与堆区模型案例分析

    C++程序内存栈区与堆区模型案例分析 介绍 在C++程序中,内存分为栈区和堆区。栈区用于存储局部变量和函数调用的上下文信息,而堆区用于动态分配内存。了解栈区和堆区的模型对于正确管理内存和避免内存泄漏非常重要。本攻略将详细讲解C++程序内存栈区与堆区模型,并提供两个示例说明。 栈区 栈区是一块连续的内存空间,用于存储局部变量和函数调用的上下文信息。栈区的分配和…

    other 2023年8月2日
    00
合作推广
合作推广
分享本页
返回顶部