Firebug无疑是javascript调试的绝佳工具;我广泛使用console.log()。
我想知道我是否可以将Firebug特定的代码留在生产中。 什么是最佳做法?评论调试代码?
答案 0 :(得分:14)
如果您在生产代码中保留console.log()调用,那么使用Internet Explorer访问该网站的人将出现JavaScript错误。如果这些人配置了额外的调试工具,那么他们将看到讨厌的对话框或弹出窗口。
快速搜索显示该线程讨论了检测Firebug控制台是否存在的方法:http://www.nabble.com/Re:-detect-firebug-existance-td19610337.html
答案 1 :(得分:14)
一种可能的解决方案是创建一个虚拟控制台对象(如果尚未定义)。
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/