我使用Firebug的console.log()来调试我的网站。如果我尝试在没有Firebug的浏览器中查看我的网站,那么我会得到一个控制台未定义错误。 有没有办法优雅地避免这个错误?未安装时忽略萤火虫控制台
我发现this potential solution,但看起来有点麻烦。 和想法?
我使用Firebug的console.log()来调试我的网站。如果我尝试在没有Firebug的浏览器中查看我的网站,那么我会得到一个控制台未定义错误。 有没有办法优雅地避免这个错误?未安装时忽略萤火虫控制台
我发现this potential solution,但看起来有点麻烦。 和想法?
我不认为它比您链接到的解决方法好得多。当然可以把它融化为只是定义console.log()
并且不再休息,但实质上,你不会绕过这样的构造。
只有想到的另一种方法是在每次调用console.log时检查它,而这更加麻烦。
链接的解决方案基本上是这方面的一个变型(有一些额外的功能):
编辑下面的代码当Firefox存在不实际工作。这会教张贴代码不检查只是为了炫耀我没有那么1337运营商||
的skillz:
window.console = window.console || {};
console.log = function(){};
其原因是,Firefox的控制台实际上是一个getter只是property关闭窗口。因此我们无法设置它。相反,需要像这样使用:
if (!window.console) {
window.console = {};
window.console.log = function(){};
}
此外,console.log
(和console.warn
,console.error
)将在WebKit浏览器,包括移动Safari浏览器,很酷吧工作?
也产生“控制台未定义”错误 – hoju 2010-01-14 06:01:23
它的确如此,谢谢。我将编辑代码。 – 2010-01-14 06:57:21
关闭我的头顶:
if(!console)
{
console = {};
console.log = function() { };
}
也产生“控制台未定义”错误 – hoju 2010-01-14 06:00:31
老实说,我会使用它。它不仅覆盖了console.log()
,还包括了其他所有console
方法,并且行数很少。它在雅虎媒体播放器中首次使用的事实似乎表明,它也可以很好地跨浏览器。
这段代码是你最好的选择,实际上非常优雅,应该在大多数情况下都能正常工作。只要你在代码片段上面评论它的用途(以免混淆未来的开发者),你应该没问题。
我的最终解决方案:
if(!("console" in window))
window.console = {log: function() {}};
@OcuS的解决方案确实是最好的,但您可以使用我的解决方案来提升它: C heck这种方式登录到FF控制台:Log to Firefox Error Console from JavaScript
然后添加到萤火虫。JS这3条线内IF:
window.console['error'] = li
window.console['warn'] = li
window.console['debug'] = li
所以你会看到每一个控制台错误,警告和调试即使萤火虫关闭
我总是创造我交的日志浏览器包装为console.log相似的功能,它看起来像这样:
function log(a){
try{
console.log(a);
}catch(er){
try{
window.opera.postError(a);
}catch(er){
//no console avaliable. put
//alert(a) here or write to a document node or just ignore
}
}
}
它可以扩展任何浏览器。在IE浏览器时,在调试我建议把在最后赶上这jQuery代码:
$('body').append('<pre>'+JSON.serialize(a)+'</pre>');
您必须添加JSON.serialize到脚本。 IE浏览器没有它(IE8可能有,我不知道)
您可以使用此代码来检查是否控制台对象存在
if('console' in window && 'log' in window.console)
{
// code using console.log here
}
或本规范
if(typeof window.console != 'undefined'
&& typeof window.console.log != 'undefined')
{
// code using console.log here
}
而且你可以阅读这篇文章 http://alexandershapovalov.com/firebug-console-is-not-defined-60/ 里面的帖子链接如何创建控制台的jQuery包装
这实际上是一个非常好的解决方案,特别是如果您使用'warn'和'error'等其他函数。 – 2010-01-18 10:26:57
链接失败了。我认为这是相同的: http://code.google.com/p/fbug/source/browse/branches/firebug1.5/lite/firebugx.js – 2010-05-12 02:50:25
感谢马修,我已经固定即使链接它不是该文件的最后一个版本(我在萤火虫的svn资源库中找不到任何地方) – OcuS 2010-12-23 16:14:39