背景:写js代码时写了很多console.log进行日志打印,最后上生产时不想删除日志输出,
但是ie在不打开控制台时,日志输出会导致后续js不执行,所以需要适时屏蔽js日志输出
(IE等不支持console.log命令的浏览器,不仅无法执行console.log而且会因为该命令导致页面出错而无法正常执行。)
注:经验证在IE7/8下有效。
背景:写代码的时候,很多地方都加了这个方便调试,但是在发布产品的时候,部分浏览器下会报错
将这些代码注释后就没问题了。但是,注释的地方太多了,而且下次修改的话还得把注释改回来,难道没有其他的办法避免这些问题么?
(function() { var noop = function noop() {}; var methods = [ 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn' ]; var length = methods.length; var console = window.console || {}; while (length--) { // Only stub undefined methods. console[methods[length]] = console[methods[length]] || noop; } }());
1、重写浏览器console日志输出,避免浏览器因不支持或未启用console.log导致的js不往下执行的问题
<script> if(typeof window.console === "undefined") { //浏览器不支持或未启用console,则禁用日志 window.console = { log:function(){} }; } </script> 或者: if (!window.console) { console = { log: function (info) { return false } } }
2、增加日志输出手动开关
if(typeof window.console === "undefined") { //浏览器不支持console,则禁用日志 window.console = { log:function(){} }; }else{ //浏览器支持console var url = window.top.location.href ; if( url.indexOf("127.0.0.1") != -1 || url.indexOf("localhost") != -1 || url.indexOf("openlog") != -1 ){ //如果是本机,或者开启了日志,则正常使用console }else{ //非本机,也未开启,则禁用console window.console = { log:function(){} }; } }
避免console错误,console兼容 (http://blog.csdn.net/yfx000/article/details/44350489)