在一次工作中,所做的项目要求页面中不能右击,不能打开F12。一般来说可以禁用F12的按键,但是可以通过开发者工具进入。经过个人实验,以下方法适用于谷歌浏览器、火狐浏览器,以及使用谷歌内核的浏览器(如QQ浏览器、搜狗浏览器等),IE忘了是否支持,自我感觉是目前比较齐全的了。
- //禁止鼠标右击
- document.oncontextmenu = function() {
- event.returnValue = false;
- };
- //禁用开发者工具F12
- document.onkeydown = document.onkeyup = document.onkeypress = function(event) {
- let e = event || window.event || arguments.callee.caller.arguments[0];
- if (e && e.keyCode == 123) {
- e.returnValue = false;
- return false;
- }
- };
- let userAgent = navigator.userAgent;
- if (userAgent.indexOf("Firefox") > -1) {
- let checkStatus;
- let devtools = /./;
- devtools.toString = function() {
- checkStatus = "on";
- };
- setInterval(function() {
- checkStatus = "off";
- console.log(devtools);
- console.log(checkStatus);
- console.clear();
- if (checkStatus === "on") {
- let target = "";
- try {
- window.open("about:blank", (target = "_self"));
- } catch (err) {
- let a = document.createElement("button");
- a.onclick = function() {
- window.open("about:blank", (target = "_self"));
- };
- a.click();
- }
- }
- }, 200);
- } else {
- //禁用控制台
- let ConsoleManager = {
- onOpen: function() {
- alert("Console is opened");
- },
- onClose: function() {
- alert("Console is closed");
- },
- init: function() {
- let self = this;
- let x = document.createElement("div");
- let isOpening = false,
- isOpened = false;
- Object.defineProperty(x, "id", {
- get: function() {
- if (!isOpening) {
- self.onOpen();
- isOpening = true;
- }
- isOpened = true;
- return true;
- }
- });
- setInterval(function() {
- isOpened = false;
- console.info(x);
- console.clear();
- if (!isOpened && isOpening) {
- self.onClose();
- isOpening = false;
- }
- }, 200);
- }
- };
- ConsoleManager.onOpen = function() {
- //打开控制台,跳转
- let target = "";
- try {
- window.open("about:blank", (target = "_self"));
- } catch (err) {
- let a = document.createElement("button");
- a.onclick = function() {
- window.open("about:blank", (target = "_self"));
- };
- a.click();
- }
- };
- ConsoleManager.onClose = function() {
- alert("Console is closed!!!!!");
- };
- ConsoleManager.init();
- }