了解Chrome控制台是否已打开

了解Chrome控制台是否已打开

我正在使用这个小脚本来查明Firebug是否已打开:

if (window.console && window.console.firebug) {
    //is open};

它运作良好。现在我正在寻找一种方法来检测Google Chrome的内置Web开发者控制台是否已打开,但我找不到任何提示。

这个:

if (window.console && window.console.chrome) {
    //is open};

不起作用。

编辑:

因此,似乎无法检测Chrome控制台是否已打开。但有一个“ 黑客 ”有效,但有一些缺点:

  • 控制台未对接时将无法工作

  • 控制台在页面加载时打开时无效

所以,我现在要选择Unsigned的答案,但如果有人提出了一个好主意,欢迎他仍然回答我改变所选答案!谢谢!


慕少森
浏览 700回答 3
3回答

红颜莎娜

function toString(2019)感谢Overcl9ck对这个答案的评论。/./用空函数对象替换正则表达式仍然有效。var devtools = function(){};devtools.toString = function() {   this.opened = true;}console.log('%c', devtools);// devtools.opened will become true if/when the console is openedregex toString(2017-2018)由于原始提问者似乎不再存在,这仍然是可接受的答案,因此添加此解决方案以提高可见性。幸得安东宁·希尔德布兰德的评论上zswang s'的答案。toString()除非控制台是打开的,否则此解决方案利用了未在已记录对象上调用的事实。var devtools = /./;devtools.toString = function() {   this.opened = true;}console.log('%c', devtools);// devtools.opened will become true if/when the console is openedconsole.profiles(2013)更新: console.profiles已从Chrome中删除。此解决方案不再有效。感谢Paul Irish使用Profiler 从Discover DevTools指出这个解决方案:function isInspectOpen(){     console.profile();      console.profileEnd();      if (console.clear) console.clear();     return console.profiles.length > 0;}window.innerHeight(2011)这个其他选项可以在页面加载后检测正在打开的停靠检查器,但是无法检测到未停靠的检查器,或者检查器是否已在页面加载时打开。误报也有一些可能性。window.onresize = function(){     if ((window.outerHeight - window.innerHeight) > 100)         alert('Docked inspector was opened');}

眼眸繁星

我创建了devtools-detect,可以检测DevTools何时打开:console.log('is DevTools open?', window.devtools.open);您还可以收听活动:window.addEventListener('devtoolschange', function (e) {     console.log('is DevTools open?', e.detail.open);});当DevTools未对接时它不起作用。但是,适用于Chrome / Safari / Firefox DevTools和Firebug。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript