了解Chrome控制台是否已打开我正在使用这个小脚本来查明Firebug是否已打开:if (window.console && window.console.firebug) {
//is open};它运作良好。现在我正在寻找一种方法来检测Google Chrome的内置Web开发者控制台是否已打开,但我找不到任何提示。这个:if (window.console && window.console.chrome) {
//is open};不起作用。编辑:因此,似乎无法检测Chrome控制台是否已打开。但有一个“ 黑客 ”有效,但有一些缺点:控制台未对接时将无法工作控制台在页面加载时打开时无效所以,我现在要选择Unsigned的答案,但如果有人提出了一个好主意,欢迎他仍然回答我改变所选答案!谢谢!
3 回答

红颜莎娜
TA贡献1842条经验 获得超13个赞
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 opened
regex 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 opened
console.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');}

眼眸繁星
TA贡献1873条经验 获得超9个赞
我创建了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。
添加回答
举报
0/150
提交
取消