我正在使用这个小脚本来查明 Firebug 是否打开:
if (window.console && window.console.firebug) {
//is open
};
而且效果很好。现在我搜索了半个小时,想找到一种方法来检测Google Chrome内置的Web开发者控制台是否打开,但我找不到任何提示。
This:
if (window.console && window.console.chrome) {
//is open
};
不起作用。
EDIT:
所以看来无法检测Chrome控制台是否打开。但有一个“hack https://stackoverflow.com/questions/7527442/how-to-detect-chrome-inspect-element-is-running-or-not” 可行,但有一些缺点:
- 当控制台脱离底座时将不起作用
- 当控制台在页面加载时打开时将不起作用
所以,我现在会选择 Unsigned 的答案,但如果 some1 提出了一个绝妙的主意,欢迎他仍然回答,我会更改所选的答案!谢谢!
将之前的答案留在下面以了解历史背景。
调试器 (2022)
虽然这并非万无一失,基于调试器的方法 https://stackoverflow.com/a/68494829/629493在另一个答案中似乎仍然有效。
requestAnimationFrame(2019 年末)
现在穆罕默德·乌默尔的方法 https://stackoverflow.com/a/48287643/629493适用于 Chrome 78,具有检测关闭和打开事件的附加优势。
函数 toString (2019)
归功于超频 https://stackoverflow.com/users/3734569/overcl9ck对此答案的评论。替换正则表达式/./
使用空函数对象仍然有效。
var devtools = function() {};
devtools.toString = function() {
if (!this.opened) {
alert("Opened");
}
this.opened = true;
}
console.log('%c', devtools);
// devtools.opened will become true if/when the console is opened
正则表达式 toString (2017-2018)
由于最初的询问者似乎不再存在,并且这仍然是公认的答案,因此添加此解决方案以提高可见性。信用去往安东尼·希尔德布兰德 https://stackoverflow.com/users/84283's comment https://stackoverflow.com/questions/7798748/find-out-whether-chrome-console-is-open/7809413#comment62884356_30638226 on zswang https://stackoverflow.com/users/1068602/zswang's answer https://stackoverflow.com/a/30638226/629493。该解决方案利用了以下事实:toString()
除非控制台打开,否则不会在记录的对象上调用。
var devtools = /./;
devtools.toString = function() {
if (!this.opened) {
alert("Opened");
}
this.opened = true;
}
console.log('%c', devtools);
// devtools.opened will become true if/when the console is opened
控制台.profiles (2013)
Update: console.profiles
已从 Chrome 中删除。该解决方案不再有效。
谢谢保罗·爱尔兰 https://stackoverflow.com/users/89484指出这个解决方案发现开发工具 http://discover-devtools.codeschool.com/chapters/1/challenges/1,使用分析器:
function isInspectOpen() {
console.profile();
console.profileEnd();
if (console.clear) {
console.clear();
}
return console.profiles.length > 0;
}
function showIfInspectIsOpen() {
alert(isInspectOpen());
}
<button onClick="showIfInspectIsOpen()">Is it open?</button>
窗口.innerHeight (2011)
这个其他选项可以检测停靠的检查器打开后,页面加载,但无法检测到未停靠的检查器,或者检查器是否已在页面加载时打开。也存在一些误报的可能性。
window.onresize = function() {
if ((window.outerHeight - window.innerHeight) > 100) {
alert('Docked inspector was opened');
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)