1. 程式人生 > >H5_0003:JS禁用調試,禁用右鍵,監聽F12事件的方法

H5_0003:JS禁用調試,禁用右鍵,監聽F12事件的方法

amp log rom 條件 wid turn ref return text

1,禁用調試

// 這個方法是防止惡意調試的
(function () {
console["log"]("================================設置控制臺界面變化事件");
‘use strict‘;
var devtools = {
open: false,
orientation: null
};
// inner大小和outer大小超過threshold被認為是打開了開發者工具
var threshold = 160;
// 當檢測到開發者工具後發出一個事件,外部監聽此事件即可,設計得真好,很好的實現了解耦

var emitEvent = function (state, orientation) {
window.dispatchEvent(new CustomEvent(‘devtoolschange‘, {
detail: {
open: state,
orientation: orientation
}
}));
};

// 每500毫秒檢測一次開發者工具的狀態,當狀態改變時觸發事件

setInterval(function () {
var widthThreshold = window.outerWidth - window.innerWidth > threshold;
var heightThreshold = window.outerHeight - window.innerHeight > threshold;
var orientation = widthThreshold ? ‘vertical‘ : ‘horizontal‘;
// 第一個條件判斷沒看明白,heightThreshold和widthThreshold不太可能同時為true,不論是其中任意一個false還是兩個都false取反之後都會為true,此表達式恒為true
if (!(heightThreshold && widthThreshold) &&
// 針對Firebug插件做檢查
((window.Firebug && window.Firebug.chrome && window.Firebug.chrome.isInitialized) || widthThreshold || heightThreshold)) {
// 開發者工具打開,如果之前開發者工具沒有打開,或者已經打開但是靠邊的方向變了才會發送事件
if (!devtools.open || devtools.orientation !== orientation) {
emitEvent(true, orientation);
};
console["log"]("================================控制臺已打開響應跳轉事件");
//打開官網
mA();
devtools.open = true;
devtools.orientation = orientation;
} else {
// 開發者工具沒有打開,如果之前處於打開狀態則觸發事件報告狀態
if (devtools.open) {
emitEvent(false, null);
}
// 將標誌位恢復到未打開
devtools.open = false;
devtools.orientation = null;
}
}, 500);

if (typeof module !== ‘undefined‘ && module.exports) {
module.exports = devtools;
} else {
window.devtools = devtools;
};

//禁用右鍵 oncontextmenu
document["\u006f\u006e\u0063\u006f\u006e\u0074\u0065\u0078\u0074\u006d\u0065\u006e\u0075"] = function () {
console["log"]("================================設置禁用右鍵");
return false;
};

//鼠標右鍵點擊事件 onmousedown
document["\u006f\u006e\u006d\u006f\u0075\u0073\u0065\u0064\u006f\u0077\u006e"] = function mc(event) {
console["log"]("================================設置禁用右鍵點擊");
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e.button == 2 || e.button == 3) {
return false;
}
}

//監聽鍵盤F12事件 onkeydown ,onkeyup,onkeypress
document["\u006f\u006e\u006b\u0065\u0079\u0064\u006f\u0077\u006e"] = document["\u006f\u006e\u006b\u0065\u0079\u0075\u0070"] = document["\u006f\u006e\u006b\u0065\u0079\u0070\u0072\u0065\u0073\u0073"] = function (event) {
console["log"]("================================設置監聽鍵盤F12事件");
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e && e.keyCode == 123) {
mA();
e.returnValue = false;
return (false);
}
};

function mA() {
console["log"]("================================設置開啟調試事件響應方法");
//window.location.href = "http://www.3dplus.cn/cn";
location[‘href‘] = "http://www.baidu.com";
}

})();

H5_0003:JS禁用調試,禁用右鍵,監聽F12事件的方法