当前位置:  开发笔记 > 编程语言 > 正文

检测Firebug的Javascript?

如何解决《检测Firebug的Javascript?》经验,为你挑选了3个好方法。

什么是检测用户是否启用了Firebug的可靠方法?



1> Andreas Grec..:
原始答案:

检查console对象(仅使用Firebug创建),如下所示:

if (window.console && window.console.firebug) {
  //Firebug is enabled
}

更新(2012年1月):

Firebug开发人员决定删除window.console.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用户,因为这样可以很容易地绕过他们可能有兴趣采取的任何"复制"或"保存"行为.那是不好的形式.
Safari确实有一个控制台对象,但Safari的控制台没有`firebug`属性,因此上述条件在Safari中会失败,因此无法检测到Firebug
IIRC,在开发人员模式的Safari中使用console.log也可以工作 - 因此'仅使用firebug'*创建的语句可能*不正确.

2> ceejayoz..:

如果启用了firebug,则不会定义window.console.console.firebug将返回版本号.



3> skagedal..:

自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() {};
        }
    }
})();

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有