Javascript最佳实践:处理特定于Firebug的代码

时间:2009-05-27 12:15:22

标签: javascript jquery firebug

Firebug无疑是javascript调试的绝佳工具;我广泛使用console.log()。

我想知道我是否可以将Firebug特定的代码留在生产中。 什么是最佳做法?评论调试代码?

9 个答案:

答案 0 :(得分:14)

如果您在生产代码中保留console.log()调用,那么使用Internet Explorer访问该网站的人将出现JavaScript错误。如果这些人配置了额外的调试工具,那么他们将看到讨厌的对话框或弹出窗口。

快速搜索显示该线程讨论了检测Firebug控制台是否存在的方法:http://www.nabble.com/Re:-detect-firebug-existance-td19610337.html

答案 1 :(得分:14)

之前被这个咬了过去。理想情况下,所有的console.log语句都需要在生产之前删除,但这很容易出错,并且开发人员总是忘记或只在FF + Firebug中进行测试。

一种可能的解决方案是创建一个虚拟控制台对象(如果尚未定义)。

if( typeof window.console == 'undefined'){
    window.console = {
        log:function(){}
    };
}

需要注意的一点是:在10.4版本的Safari中,任何对console.log的调用都会引发安全异常,因为控制台对象是Mac OS Dashboard小部件中使用的保留对象。不确定是不是这样,今晚会检查。

答案 2 :(得分:8)

我个人之前修改过我的压缩器,以去除预压缩控制台参考。添加正则表达式几分钟就可以节省一生的麻烦。

答案 3 :(得分:3)

以为我会为任何js调试添加一个非常好的提示....使用关键字“debugger”,它就像代码中的断点,firebug检测到它也是MSIE(如果你有visual studio)检测到它正如我所说的断点。

似乎没有多少人知道这一点,但我发现它非常宝贵......如果在运行代码的机器上没有安装调试器,也没有任何反应,代码也很好。虽然我不建议把他们留在那里。

答案 4 :(得分:2)

由此引起了很多头痛。

我经常使用console.log(),直到最近,发现它会导致整个JS代码在不使用firebug的FF版本中失败。

我经常在上线之前运行一个发现,并将其评论出来。

d

答案 5 :(得分:2)

有些压缩机将剥去任何带有前缀的行;;; (这是一个合法的序列,有三个空语句。)这种方式你不是严格限制在控制台引用(即你可以做一些计算,然后console.log()最后的结果,压缩器可以剥掉所有这些。)我为此使用了JavaScript::Minifier

答案 6 :(得分:1)

我在OOP Javascript中使用它,制作我自己的日志包装器来检查firebug是否存在:

myclass.prototype.log = function()
{ 
    if( typeof window.console != 'undefined' )
    {
        console.log.apply( null, arguments ); 
    }
}

请致电:

this.log( arg1, arg2, ...)

答案 7 :(得分:0)

提醒一下,IE Dev Tool不支持console.log上的apply()。

当dev工具处于活动状态时,调用console.log.apply()将在IE8中引发异常。

答案 8 :(得分:0)

您可以尝试 JavaScript Debug ,它是console.log的简单包装器 http://benalman.com/projects/javascript-debug-console-log/