Javascript 未安装时忽略firebug控制台

Javascript 未安装时忽略firebug控制台,javascript,internet-explorer,firefox,console,firebug,Javascript,Internet Explorer,Firefox,Console,Firebug,我使用Firebug的console.log()调试我的网站。如果我尝试在没有Firebug的浏览器中查看我的网站,则会出现控制台未定义错误。 有没有办法优雅地避免这个错误 我找到了,但似乎有点麻烦。 还有想法 我不认为它比您链接到的解决方法好多少。当然,可以将其分解为只定义console.log(),而不使用rest,但本质上,您不会绕过这样的构造 想到的唯一替代方法是每次调用console.log时都检查它,这更麻烦。链接的解决方案基本上是以下内容的变体(带有一些额外的功能): 编辑当fir

我使用Firebug的console.log()调试我的网站。如果我尝试在没有Firebug的浏览器中查看我的网站,则会出现控制台未定义错误。 有没有办法优雅地避免这个错误

我找到了,但似乎有点麻烦。
还有想法

我不认为它比您链接到的解决方法好多少。当然,可以将其分解为只定义
console.log()
,而不使用rest,但本质上,您不会绕过这样的构造


想到的唯一替代方法是每次调用console.log时都检查它,这更麻烦。

链接的解决方案基本上是以下内容的变体(带有一些额外的功能):

编辑当firefox存在时,下面的代码实际上不起作用。这将教你如何在不检查的情况下发布代码,只是为了炫耀我的不太好的1337操作员
|
skillz:

window.console = window.console || {};
console.log = function(){};
这是因为firefox控制台实际上是一个仅用于getter的关闭窗口。因此,我们无法设置它。相反,需要使用类似的方法:

if (!window.console) {
  window.console = {};
  window.console.log = function(){};
}

另外,
console.log
(和
console.warn
console.error
)也可以在Webkit浏览器上使用,包括mobile Safari,非常酷,是吧?

我想不起来:

if(!console)
{
     console = {};
     console.log = function() { };
}

老实说,我会用这个。它不仅涵盖了
console.log()
,还涵盖了其他所有
console
方法,并且只包含了相当短的行数。它首次在雅虎媒体播放器中使用的事实似乎表明,它在跨浏览器中也能出色地工作

这段代码是您的最佳选择,实际上相当优雅,应该在大多数情况下都能工作。只要您在代码段上方注释它的用途(以免混淆未来的开发人员),您就可以了。

我的最终解决方案:

if(!("console" in window)) 
    window.console = {log: function() {}};

Firebug源代码提供了一个执行此操作的文件:


不要每天重新发明轮子:)

@OcuS的解决方案肯定是最好的,但你可以用我的解决方案来增强它: 选择此方式登录FF控制台:

如果出现以下情况,则将这3行添加到firebugx.js中:

window.console['error'] = li
window.console['warn'] = li
window.console['debug'] = li

因此,您将看到每个控制台错误警告调试的日志,即使Firebug已关闭

我始终为类似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代码放在最后一个catch中:

$('body').append('<pre>'+JSON.serialize(a)+'</pre>');
$('body').append(''+JSON.serialize(a)+'');

必须将JSON.serialize添加到脚本中。IE没有它(IE8可能有,我不确定)

您可以使用此代码检查console对象是否存在

if(typeof window.console != 'undefined'
&& typeof window.console.log != 'undefined')
{
    // code using console.log here
}
还是这个代码

你也可以阅读这篇文章
在post链接中,如何为console创建jQuery包装器实际上是一个非常好的解决方案,特别是如果您使用其他功能,如
warn
error
。我的链接失败了。我认为这是一样的:谢谢Matthew,我已经修复了链接,即使它不是文件的最新版本(我在firebug的svn存储库中找不到),代码对我来说看起来很奇怪(或者我应该说是错的)。如果(!window.console | | |!console.firebug){…}在其中一个控制台丢失时创建虚拟控制台。我认为应该是&&而不是| |。请注意
控制台。firebug
在其他浏览器中不存在,现在甚至在安装并打开firebug的Firefox中也不存在,这使得整个控制台忽略了要采取的行动。因此,我建议更改
| |!控制台.firebug
进入刚刚
|| |!控制台
if(typeof window.console != 'undefined'
&& typeof window.console.log != 'undefined')
{
    // code using console.log here
}