检测用户是否启用了 Firebug 的可靠方法是什么?
检测 Firebug 的 Javascript?
IT技术
javascript
firebug
2021-03-13 06:09:06
6个回答
原答案:
检查console
对象(仅使用 Firebug 创建),如下所示:
if (window.console && window.console.firebug) {
//Firebug is enabled
}
更新(2012 年 1 月):
Firebug 开发人员已决定删除window.console.firebug
. 您仍然可以通过鸭子输入来检测 Firebug 的存在,例如
if (window.console && (window.console.firebug || window.console.exception)) {
//Firebug is enabled
}
或其他各种方法,如
if (document.getUserData('firebug-Token')) ...
if (console.log.toString().indexOf('apply') != -1) ...
if (typeof console.assert(1) == 'string') ...
但总的来说,实际上应该没有必要这样做。
如果启用了 firebug,window.console 将不会是未定义的。console.firebug 将返回版本号。
从 Firebug 1.9.0 版开始,console.firebug
由于隐私问题不再定义;请参阅发行说明、错误报告。这打破了上述方法。的确,它把艾伦问题的答案改成了“没有办法”;如果是另一种方式,它被认为是一个错误。
相反,解决方案是检查可用性console.log
或您想要使用或替换的任何内容。
这是一个替代 David Brockman 上面介绍的代码类型的建议,但不删除任何现有功能。
(function () {
var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml',
'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];
if (window.console) {
for (var i = 0; i < names.length; i++) {
if (!window.console[names[i]]) {
window.console[names[i]] = function() {};
}
}
} else {
window.console = {};
for (var i = 0; i < names.length; i++) {
window.console[names[i]] = function() {};
}
}
})();
可能无法检测。
Firebug 有多个选项卡,可以单独禁用,现在默认情况下不启用。
GMail 只能判断我是否启用了“控制台”选项卡。进一步探索可能需要安全规避,而您不想去那里。
如果未安装,您可以使用类似的方法来防止代码中的萤火虫调用导致错误。
if (!window.console || !console.firebug) {
(function (m, i) {
window.console = {};
while (i--) {
window.console[m[i]] = function () {};
}
})('log debug info warn error assert dir dirxml trace group groupEnd time timeEnd profile profileEnd count'.split(' '), 16);
}