避免console错误,console兼容

背景:写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)

原文地址:https://www.cnblogs.com/aliwa/p/7646092.html