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

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

除了显而易见的:

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

有没有一种很好的方法来记录对所有主流浏览器友好的JavaScript?

编辑:

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

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

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

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

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

你可以创建一个假的console

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

我自己用这个片段

 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() {}; }; 
 function log(log){ try{ console.log( log); }catch(err){} } 

我正在使用fauxconsole ; 我修改了一点css,使它看起来更好但工作得很好。

我通过使用上面描述的“假控制台”解决了它,以防止脚本执行中断。 它仅包含在InternetExplorer <10中。我在我的html头中包含它: