我正在尝试使用console.log将一些日志记录放入我程序的javascript端。但是我注意到,除非在IE中打开开发控制台,否则JS在命中console.log时基本停止工作。这是一个痛苦......这意味着每当我想进行生产构建时,我必须删除所有日志记录。
除了显而易见的:
function DoSafeConsoleLog( parameters )
{
if ( !$.browser.msie )
{
console.log( parameters );
}
}
是否有一种记录对所有主流浏览器友好的javascript的好方法?
编辑:
好吧,看完重复的帖子(哎呀)以及在这里考虑答案之后,我一定要在调用前检查控制台是否存在。尽管我不愿意获得额外的标记,但我宁愿不要踩到可能想要使用Firebug Lite调试代码的未来程序员。
答案 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]-->