有没有办法登录控制台而不破坏IE下的代码?

时间:2011-10-25 16:27:52

标签: javascript jquery logging

我正在尝试使用console.log将一些日志记录放入我程序的javascript端。但是我注意到,除非在IE中打开开发控制台,否则JS在命中console.log时基本停止工作。这是一个痛苦......这意味着每当我想进行生产构建时,我必须删除所有日志记录。

除了显而易见的:

function DoSafeConsoleLog( parameters )
{
    if ( !$.browser.msie )
    {
         console.log( parameters ); 
    }
}

是否有一种记录对所有主流浏览器友好的javascript的好方法?

编辑:

好吧,看完重复的帖子(哎呀)以及在这里考虑答案之后,我一定要在调用前检查控制台是否存在。尽管我不愿意获得额外的标记,但我宁愿不要踩到可能想要使用Firebug Lite调试代码的未来程序员。

6 个答案:

答案 0 :(得分:15)

您可以创建假的console

if (typeof console === "undefined")
    console = { log: function() { } };

答案 1 :(得分:9)

IE有自己的控制台,如果您使用firebug lite,则不想覆盖控制台。只需确保在调用日志时控制台存在:

if (window.console) console.log('foo bar baz', fizz, buzz);

更好的是,使用&&来快捷方式:

window.console && console.log('foo bar baz', fizz, buzz);

答案 2 :(得分:1)

我自己使用此代码段

if (! ('console' in window) ) {
var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];
window.console = {};
for (var i = 0; i < names.length; ++i) window.console[names[i]] = function() {};
}else {
/*if it exists but doesn't contain all the same methods....silly ie*/
var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];
for (var i = 0; i < names.length; ++i) if(!window.console[names[i]])window.console[names[i]] = function() {};
};

答案 3 :(得分:0)

function log(log){
  try{
     console.log( log); 
  }catch(err){}
}

答案 4 :(得分:0)

我正在使用fauxconsole;我对css进行了一些修改,使其看起来更好但效果非常好。

答案 5 :(得分:0)

我通过使用&#34;假控制台&#34;解决了这个问题。如上所述,防止脚本执行中断。 它仅包含在InternetExplorer&lt; 10。 我把它包含在我的html头中:

<!--[if lte IE 10]>
  <script> if (typeof console === "undefined") console = { log: function() { } }; </script>
<![endif]-->
相关问题