JavaScript禁用控制台调试

发布于 2019-09-03  22 次阅读


之前在使用学校某系统的时候出于好奇想打开控制台,发现无法打开。心想着可能是按键屏蔽,使用鼠标打开发现...

于是在查看了源码后发现了如下禁用控制台调试代码

var h = window.innerHeight,w=window.innerWidth;  
window.oncontextmenu=function(){return false;}  
window.addEventListener("keydown", function(e) {
    if (e.keyCode == 123) {
        window.event.returnValue = false; 
        console.log("为了安全,在打浏览器开发者工具下不能访问系统");
        return false;  
    } else if((e.ctrlKey) && (e.shiftKey) && (e.keyCode == 73)){
        window.event.returnValue = false; 
        console.log("为了安全,在打浏览器开发者工具下不能访问系统");
        return false;
    }else if((e.shiftKey) && (e.keyCode == 121)){
        window.event.returnValue = false; 
        return false;
    }else if((e.ctrlKey) && (e.keyCode == 85)){
        window.event.returnValue = false; 
        return false;
    }else if ((e.ctrlKey) && (e.keyCode == 83)) {
        window.event.returnValue = false; 
        return false;
    }
}, false);
//如果用户在工具栏调起开发者工具,那么判断浏览器的可视高度和可视宽度是否有改变,如有改变则关闭本页面  
window.onresize = function () {  
   // if (h != window.innerHeight||w!=window.innerWidth){  
      //  window.location.reload();
    //}  
};
function checkDebugger(){
    const d=new Date();
    debugger;
    const dur=Date.now()-d;
    if(dur<5){
        return false;
    }else{
        window.close();  
        window.location = "about:blank";
        return true;
    }
};
function breakDebugger(){
    if(checkDebugger()){
        breakDebugger();
    }
};

(function isConsoleOpen() {  
     breakDebugger();
})();
(function(){
     var re=/x/;
     var i=0;
     console.log(re);
     re.toString=function(){
         window.close();  
         window.location = "about:blank";
         console.log("为了安全,在打浏览器开发者工具下不能访问系统");
     }
})();

但是禁用快捷键在IE上并不能适用,所以贴上我之前使用的兼容IE的代码

//禁用控制台打开
document.onkeydown = function (e) {
    var currKey = 0, evt = e || window.event;
    currKey = evt.keyCode || evt.which || evt.charCode;
    if ((currKey == 123) || ((event.ctrlKey == true) && (event.shiftKey == true) && (currKey == 73))) {
        layer.msg('控制台不见了呢', {
            time: 1000
        });
        window.event.cancelBubble = true;
        window.event.returnValue = false;
        return false;
    }
}

好的,水文结束了