我正在使用这个小脚本来查看Firebug是否打开:
if (window.console && window.console.firebug) {
//is open
};
它工作得很好。现在,我花了半个小时寻找一种方法来检测Google Chrome的内置web开发人员控制台是否打开,但我没有找到任何提示。
这是:
if (window.console && window.console.chrome) {
//is open
};
不起作用。
编辑:
因此,似乎无法检测Chrome控制台是否打开。但是有一个“
黑客
“这是可行的,但也有一些缺点:
当控制台断开与坞站的连接时将不起作用
当控制台在页面加载时打开时将不起作用
所以,我现在选择未签名的答案,但如果some1想出了一个聪明的想法,欢迎他仍然回答,我改变选择的答案!谢谢!
发布于 2011-10-18 23:02:47
requestAnimationFrame (2019年末)
将这些先前的答案留在这里作为历史背景。目前
穆罕默德·乌默尔的方法
在Chrome 78上工作,具有检测关闭和打开事件的额外优势。
function toString (2019)
归功于
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)
由于最初的提问者似乎不再存在,而这仍然是公认的答案,因此添加此解决方案以提高可见性。功劳归于
安东宁·希尔德布兰德
%s
评论
打开
zswang
%s
答案
..。此解决方案利用了以下事实
除非控制台处于打开状态,否则不会对记录的对象调用。
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
console.profiles (2013)
更新:
已从Chrome中删除。此解决方案不再有效。
感谢
保罗·爱尔兰
从以下位置指出这个解决方案:
发现DevTools
,使用profiler:
function isInspectOpen() {
console.profile();
console.profileEnd();
if (console.clear) {
console.clear();
}
return console.profiles.length > 0;
}
function showIfInspectIsOpen() {
alert(isInspectOpen());
}
Is it open?
window.innerHeight (2011)
此另一个选项可以检测停靠的检查器
打开,之后
页面加载,但将无法检测到未停靠的检查器,或者检查器在页面加载时已打开。也存在一些误报的可能性。
window.onresize = function() {
if ((window.outerHeight - window.innerHeight) > 100) {
alert('Docked inspector was opened');
}
}
发布于 2015-06-04 16:02:46
Chrome 65+ (2018)
r = /./
r.toString = function () {
document.title = '1'
}
console.log('%c', r);
演示:
https://jsbin.com/cecuzeb/edit?output
(更新于2018-03-16)
包:
https://github.com/zswang/jdetects
当打印“元素”时,Chrome开发者工具将获得它的id
var checkStatus;
var element = document.createElement('any');
element.__defineGetter__('id', function() {
checkStatus = 'on';
});
setInterval(function() {
checkStatus = 'off';
console.log(element);
console.clear();
}, 1000);
另一个版本(来自评论)
var element = new Image();
Object.defineProperty(element, 'id', {
get: function () {
/* TODO */
alert('囧');
}
});
console.log('%cHello', element);
打印常规变量:
var r = /./;
r.toString = function() {
document.title = 'on';
};
console.log(r);
发布于 2018-01-17 02:27:37
非常可靠的黑客攻击
基本上,在属性上设置一个getter,并将其记录在控制台中。显然,只有当控制台打开时,才能访问它。
https://jsfiddle.net/gcdfs3oo/44/
var checkStatus;
var indicator = document.querySelector('#devtool-status');
var element = new Image();
Object.defineProperty(element, 'id', {
get: function() {
checkStatus='on';
throw new Error("Dev tools checker");
}
});
requestAnimationFrame(function check() {
checkStatus = 'off';
console.dir(element);
indicator.className = checkStatus;
requestAnimationFrame(check);
});
.on{
color:limegreen;
}
.off{
color:red;
}
dev toolbar open: icon is green
dev toolbar closed: icon is red
Now press F12 to see if this works for your browser!
https://stackoverflow.com/questions/7798748
复制相似问题