Javascript 有没有一种方法可以在IE下登录到控制台而不破坏代码?

Javascript 有没有一种方法可以在IE下登录到控制台而不破坏代码?,javascript,jquery,logging,Javascript,Jquery,Logging,我正在尝试使用console.log将一些日志记录到程序的javascript端。不过,我注意到,除非开发控制台在IE中打开,否则JS在点击console.log时基本上停止工作。这是一种痛苦。。。这意味着每当我想进行生产构建时,我必须删除所有日志记录 除了显而易见的原因外: function DoSafeConsoleLog( parameters ) { if ( !$.browser.msie ) { console.log( parameters );

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

除了显而易见的原因外:

function DoSafeConsoleLog( parameters )
{
    if ( !$.browser.msie )
    {
         console.log( parameters ); 
    }
}
有没有一种对所有主要浏览器都友好的记录javascript的好方法

编辑:


好吧,在看了重复帖子(oops)并考虑了这里的答案之后,我不得不站在一边,在打电话之前检查控制台是否存在。尽管我不喜欢有额外的标记,但我还是不想让未来的程序员用Firebug Lite来调试我的代码

您可以创建一个假的
控制台

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

IE有自己的控制台,如果您正在使用,您不会希望覆盖控制台。只要确保调用日志时控制台存在:

if (window.console) console.log('foo bar baz', fizz, buzz);
更好的方法是使用
&&
快捷方式:

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

我正在使用;我对css做了一些修改,使它看起来更漂亮,但效果很好。

我自己也使用了这个片段

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() {};
};
if(!(“控制台”在窗口中)){
变量名称=['log'、'debug'、'info'、'warn'、'error'、'assert'、'dir'、'dirxml'、'group'、'groupEnd'、'time'、'timeEnd'、'count'、'trace'、'profile'、'profileEnd'];
window.console={};
对于(vari=0;i
我使用上面描述的“假控制台”解决了这个问题,以防止脚本执行中断。 仅适用于InternetExplorer<10的用户。 我在我的html头中包含以下内容:

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


我并不特别喜欢这个想法,因为它会覆盖页面加载后添加的控制台,例如。老实说,我曾与firebug lite进行过多次斗争,最终将其删除。我发现Chrome的开发者控制台足以让我解决问题——Firebug lite可能每天出现一次故障,必须关闭。不过,这只是我的经验。@Sean Anderson,
将只为IE添加它。可能重复的可能重复的可能重复的“IE有自己的控制台”是什么意思?如果开发人员控制台打开,它提供的控制台可以与console.log一起愉快地工作。即使控制台没有显式打开,其他浏览器也可以登录到控制台。只是好奇,并不是说你的答案是错误的。你肯定有我正在考虑的有效分数。:)我切换到
window.console&&console.log()
,现在一切都在IE中运行!只是提醒一下,让
console.log
s渗透到生产代码中通常是个坏主意。
<!--[if lte IE 10]>
  <script> if (typeof console === "undefined") console = { log: function() { } }; </script>
<![endif]-->