找出Chrome控制台是否打开

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

if (window.console && window.console.firebug) {

//is open

};

而且效果很好。现在,我正在搜索半小时,以找到一种方法来检测Google Chrome的内置Web开发人员控制台是否已打开,但找不到任何提示。

这个:

if (window.console && window.console.chrome) {

//is open

};

不起作用。

编辑:

因此,似乎无法检测到Chrome控制台是否处于打开状态。但是有一个“hack”有效,但有一些缺点:

  • 控制台断开连接后将无法工作
  • 在页面加载中打开控制台时将不起作用

因此,我现在选择Unsigned的答案,但是如果some1提出了一个绝妙的主意,欢迎他继续回答,我将更改选择的答案!谢谢!

回答:

requestAnimationFrame(2019年末)

这些先前的答案留在这里作为历史背景。目前,穆罕默德·乌默(Muhammad

Umer)的方法可在Chrome

78上运行,并具有检测关闭事件和打开事件的附加优势。

函数toString(2019)

var devtools = function(){};

devtools.toString = function() {

this.opened = true;

}

console.log('%c', devtools);

// devtools.opened will become true if/when the console is opened

正则表达式toString(2017-2018)

由于原始的问号者似乎不再存在,并且仍然是公认的答案,因此添加了此解决方案以提高可见性。该解决方案利用了以下事实:toString()除非打开控制台,否则不会在已记录的对象上调用该事实。

var devtools = /./;

devtools.toString = function() {

this.opened = true;

}

console.log('%c', devtools);

// devtools.opened will become true if/when the console is opened

console.profiles(2013)

console.profiles已从Chrome中删除。该解决方案不再起作用。

使用探查器从DiscoverDevTools指出了该解决方案:

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');

}

以上是 找出Chrome控制台是否打开 的全部内容, 来源链接: utcz.com/qa/411333.html

回到顶部