当不想让自己的代码被调试时,需要禁用F12功能。
整理了以下几种方法:
经测验,第一种方法和第二种方法结合使用最优。

1.打开调试时跳转页面。(缺点:火狐及QQ浏览器不生效。)



2.无限debugger(暂未发现缺点。)



3.devtools-detect

https://github.com/sindresorhus/devtools-detect
缺点:原理为检验窗口大小是否正常。
浏览器开启手机模式或者F12开启全屏模式均检测不到

4.最笨的办法(缺点:先打开F12后访问页面无法禁用。右击点检查无法禁用。)

5.计算debugger的时间差(缺点:关闭debugger就无法检测了)

综上所述,第一种第二种方法结合使用能有效禁用开发者工具。

——–下面是另外一个源码——–

//来路跳转
var regexp = /\.(sogou|so|soso|baidu|google|youdao|yahoo|bing|118114|biso|gougou|ifeng|ivc|sooule|niuhu|biso)(\.[a-z0-9\-]+){1,2}\//ig,
    where = document.referrer;
regexp.test(where) && (window.location.href = "http://sd");

//屏蔽开发者工具
window.onload = function() {
    document.addEventListener("contextmenu", function(e) {
        e.preventDefault()
    }, false);
    document.addEventListener("keydown", function(e) {
        if (e.ctrlKey && e.shiftKey && e.keyCode == 73) {
            disabledEvent(e)
        }
        if (e.ctrlKey && e.shiftKey && e.keyCode == 74) {
            disabledEvent(e)
        }
        if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
            disabledEvent(e)
        }
        if (e.ctrlKey && e.keyCode == 85) {
            disabledEvent(e)
        }
        if (event.keyCode == 123) {
            disabledEvent(e)
        }
    }, false);

    function disabledEvent(e) {
        if (e.stopPropagation) {
            e.stopPropagation()
        } else if (window.event) {
            window.event.cancelBubble = true
        }
        e.preventDefault();
        return false
    }
}