Firebug当然是javascript调试的绝佳工具;我广泛使用console.log()。Javascript最佳实践:处理Firebug特定的代码
我想知道我是否可以在生产中留下特定的Firebug的代码。 最佳做法是什么?评论调试代码?
Firebug当然是javascript调试的绝佳工具;我广泛使用console.log()。Javascript最佳实践:处理Firebug特定的代码
我想知道我是否可以在生产中留下特定的Firebug的代码。 最佳做法是什么?评论调试代码?
如果你离开的console.log()调用你的产品代码,然后人访问使用Internet Explorer的网站将有JavaScript错误。如果这些人有额外的调试工具配置,那么他们会看到讨厌的对话框或弹出窗口。
快速搜索发现此线程讨论方法,如果Firebug控制台存在检测:http://www.nabble.com/Re:-detect-firebug-existance-td19610337.html
我已经有很多由此造成的头痛。
我使用的console.log()很多,直到最近,发现它会导致整个JS代码在FF的版本失败不使用萤火虫。
通常我才去住,并注释掉它运行的发现。
d
被这个前咬伤。理想情况下,所有console.log语句都需要在生产之前删除,但这很容易出错,开发人员总是忘记或仅在FF + Firebug中进行测试。
一种可能的方案是,如果一个尚未定义创建一个虚拟控制台对象。谨慎的
if(typeof window.console == 'undefined'){
window.console = {
log:function(){}
};
}
一个字:它曾经是10.4,任何调用CONSOLE.LOG会抛出一个安全异常的控制台对象是在Mac OS Dashboard构件使用的预留对象Safari的情况。不知道这是什么情况,今晚会检查。
个人而言,我修改了我的压缩机前一阵子来剔除控制台参考预压缩。几分钟后添加一个正则表达式可以节省一生的麻烦。
想到我会为任何js调试添加一个非常好的提示....使用关键字“调试器”,它就像代码中的断点,萤火虫检测到它也MSIE(如果你有Visual Studio)检测它和我说它是一个断点。
并非许多人似乎知道这一点,但我发现它invaluble ...如果还有心不是有安装在运行该代码的机器上的一个调试器,没有任何反应和代码经过精细。虽然我不建议让他们留在那里。
某些压缩机会去掉以; ;;为前缀的任何行。 (这是一个合法的序列,有三个空的语句)。这样你就不会严格限制于控制台引用(也就是说,你可以做一些计算,然后在最后使用console.log()结果,压缩器可以将其全部取出。)我使用JavaScript::Minifier。
我在OOP的Javascript使用,使我自己的包装日志,检查是萤火虫存在:
myclass.prototype.log = function()
{
if(typeof window.console != 'undefined')
{
console.log.apply(null, arguments);
}
}
只要致电:
this.log(arg1, arg2, ...)
只是一个提醒,IE浏览器开发工具不支持在console.log上应用()。
当dev工具处于活动状态时,调用console.log.apply()将引发IE8中的异常。
您可以尝试的JavaScript调试,它是S代表的console.log http://benalman.com/projects/javascript-debug-console-log/
最新版本10.5的Safari实际使用在他们的网站开发工具的console.log()API简单的包装,所以这可能如果您支持最新版本,则不会成为问题。 – ajm 2009-05-27 14:26:43
不够公平,认为它们不会让它损坏太长 – 2009-05-27 15:05:52