在一次工作中,所做的项目要求页面中不能右击,不能打开F12。一般来说可以禁用F12的按键,但是可以通过开发者工具进入。经过个人实验,以下方法适用于谷歌浏览器、火狐浏览器,以及使用谷歌内核的浏览器(如QQ浏览器、搜狗浏览器等),IE忘了是否支持,自我感觉是目前比较齐全的了。


  1. //禁止鼠标右击
  2. document.oncontextmenu = function() {
  3. event.returnValue = false;
  4. };
  5. //禁用开发者工具F12
  6. document.onkeydown = document.onkeyup = document.onkeypress = function(event) {
  7. let e = event || window.event || arguments.callee.caller.arguments[0];
  8. if (e && e.keyCode == 123) {
  9. e.returnValue = false;
  10. return false;
  11. }
  12. };
  13. let userAgent = navigator.userAgent;
  14. if (userAgent.indexOf("Firefox") > -1) {
  15. let checkStatus;
  16. let devtools = /./;
  17. devtools.toString = function() {
  18. checkStatus = "on";
  19. };
  20. setInterval(function() {
  21. checkStatus = "off";
  22. console.log(devtools);
  23. console.log(checkStatus);
  24. console.clear();
  25. if (checkStatus === "on") {
  26. let target = "";
  27. try {
  28. window.open("about:blank", (target = "_self"));
  29. } catch (err) {
  30. let a = document.createElement("button");
  31. a.onclick = function() {
  32. window.open("about:blank", (target = "_self"));
  33. };
  34. a.click();
  35. }
  36. }
  37. }, 200);
  38. } else {
  39. //禁用控制台
  40. let ConsoleManager = {
  41. onOpen: function() {
  42. alert("Console is opened");
  43. },
  44. onClose: function() {
  45. alert("Console is closed");
  46. },
  47. init: function() {
  48. let self = this;
  49. let x = document.createElement("div");
  50. let isOpening = false,
  51. isOpened = false;
  52. Object.defineProperty(x, "id", {
  53. get: function() {
  54. if (!isOpening) {
  55. self.onOpen();
  56. isOpening = true;
  57. }
  58. isOpened = true;
  59. return true;
  60. }
  61. });
  62. setInterval(function() {
  63. isOpened = false;
  64. console.info(x);
  65. console.clear();
  66. if (!isOpened && isOpening) {
  67. self.onClose();
  68. isOpening = false;
  69. }
  70. }, 200);
  71. }
  72. };
  73. ConsoleManager.onOpen = function() {
  74. //打开控制台,跳转
  75. let target = "";
  76. try {
  77. window.open("about:blank", (target = "_self"));
  78. } catch (err) {
  79. let a = document.createElement("button");
  80. a.onclick = function() {
  81. window.open("about:blank", (target = "_self"));
  82. };
  83. a.click();
  84. }
  85. };
  86. ConsoleManager.onClose = function() {
  87. alert("Console is closed!!!!!");
  88. };
  89. ConsoleManager.init();
  90. }

Chrome禁用开发者工具的更多相关文章

  1. 谷歌Chrome浏览器开发者工具的基础功能

    上一篇我们学习了谷歌Chrome浏览器开发者工具的基础功能,下面介绍的是Chrome开发工具中最有用的面板Sources.Sources面板几乎是最常用到的Chrome功能面板,也是解决一般问题的主要 ...

  2. [转]谷歌Chrome浏览器开发者工具教程—JS调试篇

    来源:http://blog.csdn.net/cyyax/article/details/51242720 上一篇我们学习了谷歌Chrome浏览器开发者工具的基础功能,下面介绍的是Chrome开发工 ...

  3. [转]谷歌Chrome浏览器开发者工具教程—基础功能篇

    来源:http://www.xiazaiba.com/jiaocheng/5557.html Chrome(F12开发者工具)是非常实用的开发辅助工具,对于前端开发者简直就是神器,但苦于开发者工具是英 ...

  4. Mac下safari、chrome打开开发者工具快捷键

    mac下safari和chrome打开开发者工具的快捷键相同,都是option(alt)+command+i 这个是我的默认配置,没有更改过的.

  5. 通过使用Chrome的开发者工具来学习JavaScript

    本文作者是Peter Rybin,Chrome开发者工具团队成员. 本文中,我们将通过使用Chrome的开发者工具,来学习JavaScript中的两个重要概念”闭包”和”内部属性”. 闭包 首先要讲的 ...

  6. Chrome的开发者工具(Chrome Developer Tools)

    Chrome的开发者工具(Chrome Developer Tools) 按F12 https://developer.chrome.com/devtools/index http://www.w3s ...

  7. 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍

    爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,load ...

  8. chrome浏览器开发者工具使用教程[转]

    转自:http://www.cr173.com/html/16930_1.html 更多资源:https://developers.google.com/chrome-developer-tools/ ...

  9. Chrome/谷歌开发者工具分析

    Chrome/谷歌开发者工具还是要好好掌握一下,对于前端开发超级有用:https://developers.google.com/web/tools/chrome-devtools/ 1.js内存使用 ...

  10. MAC 打开Chrome打开开发者工具的快捷键

    mac下safari和chrome打开开发者工具的快捷键相同,都是 option(alt)+command+i 这个是我的默认配置,没有更改过的.

随机推荐

  1. win32com操作word API精讲 第七集 Range(五)字体格式精讲

    本课程<win32com操作word API精讲&项目实战>视频平台以视频为主,本平台以文字为主,公众号ID:一灯编程 本节课主要讲解使用Range操作Font接口中的字体.字号. ...

  2. 10月27日内容总结——hashlib加密模块和logging、subprocess模块

    目录 一.hashlib加密模块 1.何为加密 2.为什么加密 3.如何判断数据是否以加密 4.密文的长短有什么意义 5.加密算法的基本操作 二.加密补充说明 三.subprocess模块 1.sub ...

  3. icofx把图片转为ico图标、icofx 教程

    免费的图标编辑工具 icofx的介绍 IcoFX 是一款免费的图标编辑工具,让您轻松创建 Windows XP 和 Windows Vista 图标.在编辑区您可以轻松的预览.保存.更改您的图标.您可 ...

  4. 从 Newtonsoft.Json 迁移到 System.Text.Json

    一.写在前面 System.Text.Json 是 .NET Core 3 及以上版本内置的 Json 序列化组件,刚推出的时候经常看到踩各种坑的吐槽,现在经过几个版本的迭代优化,提升了易用性,修复了 ...

  5. ubuntu18.04下联想电脑不能打开wifi

    一.问题描述: 本人使用联想拯救者14IFI笔记本在安装Ubuntu系统时会出现无线硬件开关关闭的问题,当然也就无法连网(Wi-Fi). (最好先使用 sudo rfkill unblock all) ...

  6. vue项目部署在nodejs+express

    一.安装node和打包vue项目就不用多说了 二.安装express Express是一个保持最小规模的灵活的Node.js web应用程序开发框架,为web和移动应用程序提供一组强大的功能 npm ...

  7. 认识Spring MVC-概念-小demo

    二:SpringMVC 异常码: 405:请求不允许 404:资源不存在 400:参数有问题 500:代码有问题 SpringMvc是Spring FrameWork提供的WEB组件,是目前的主流的实 ...

  8. 大规模 IoT 边缘容器集群管理的几种架构-1-Rancher+K3s

    前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介 ️Reference: IoT 边缘计算系列文章 Rancher + K3s 简介 Rancher: Kubernetes ...

  9. JZOJ 3207.Orthogonal Anagram

    \(\text{Problem}\) 给出一个字符串,求经过重新排列的另一个字典序最小的字符串,满足:相同的位置上 原串与结果串的字符不同.不存在则输出空串. \(\text{Solution}\) ...

  10. EMBARK研究: 依那西普治疗早期nr-axSpA达48周的临床和MRI疗效

    关键词: 放射学阴性中轴型SpA; TNF拮抗剂; 磁共振影像 EMBARK研究48周结果: 依那西普治疗早期放射学阴性中轴型SpA患者的临床与MRI疗效 电邮发布日期:2016年1月25日 文献: ...