監聽瀏覽器的控制檯(開發者工具)是否開啟
原理
利用console列印日誌的非同步策略。
當使用console列印物件的時候(RegExp/Date/Array/Dom),輸出的是引用,也就是說,顯示到控制檯上的是最新的值,而不是執行輸出那一刻的值。如下圖:
即,每次顯示的時候,都會重新獲取資訊。
var ConsoleManager={
onOpen(){
alert("Console is opened")
},
onClose(){
alert("Console is closed")
},
init(){
var self = this;
var x = document.createElement('div');
var isOpening = false,isOpened=false;
Object.defineProperty(x, 'id', {
get(){
if(!isOpening){
self.onOpen();
isOpening=true;
}
isOpened=true;
}
});
setInterval(function(){
isOpened=false;
console.info(x);
console.clear();
if(!isOpened && isOpening){
self.onClose();
isOpening=false;
}
},200)
}
}
ConsoleManager.onOpen = function(){
alert("Console is opened!!!!!")
}
ConsoleManager.onClose = function(){
alert("Console is closed!!!!!")
}
ConsoleManager.init();
————————————————
版權宣告:本文為CSDN博主「_Sirius」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/qq_21460229/article/details/103182426