Javascript检测开发者工具Devtools是否打开(Chrome/Firefox/IE)

首先要确定一点:是没有统一标准的方法来检测各个浏览器的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

版权声明:著作权归作者所有。

相关推荐

纯JavaScript检测页面是否加载完成(理解JavaScript页面加载事件)

JavaScript与页面加载相关的事件先介绍JavaScript与页面加载相关的几个事件:document.readystatechangereadystatechage事件会监控document.readyState。readyState有三个值:loading:文档正在加载interactive:文档已加载完成且已被解析,但子资源(如image,css,iframe等)仍在加载。comple

JavaScript检查Date对象是否为Invalid Date

使用Date()构造日期对象,如果传入非日期格式的字符串,仍然能构造出Date对象。在chrome控制台>var date = new Date("hello"); >date Invalid Date >typeof date “object” >date instanceof&nb

JavaScript判断两个数组是否相等

首先判断两个数组是否相等时不能直接使用==var array1 = []; var array2 = []; console.log(array1 == array2); //输出false 对于对象来说,==比较的是两个对象是否为同一个对象。数组属于对象类型,尽管数组元素是相同的,但这两个数组属于不同的对象