首先要确定一点:是没有统一标准的方法来检测各个浏览器的devtools是否打开。所以只能针对不同的浏览器使用不同的方案,当然随着浏览器能的升级,有可能目前的方案也是会不适用的。
这里列出目前各个浏览器可用的方案。
方案一
console.log隐式调用元素的id
function isDevToolsOpened() {
var opened = false;
var element = document.createElement('any');
element.__defineGetter__('id', function() {
opened = true;
});
console.log(element);
console.clear && console.clear();
return opened || false;
}
兼容浏览器:Chrome,IE11
方案二
console.log()隐式调用RegExp的toString()
function isDevToolsOpened() {
const devTools = /./;
devTools.toString = function() {
this.opened = true;
}
console.log(devTools);
console.clear && console.clear();
return devTools.opened || false;
}
兼容浏览器:Firefox,IE11
各浏览器测试版本:
- Chrome: 64.0.3282.186(正式版本) (64 位)
- Firefox:58.0.2 (64 位)
- IE:11