search

Home  >  Q&A  >  body text

firebug - 如何避免console.log()引起javascript的兼容问题

写代码的时候,很多地方都加了这个方便调试,但是在发布产品的时候,部分浏览器下会报错
将这些代码注释后就没问题了。但是,注释的地方太多了,而且下次修改的话还得把注释改回来,难道没有其他的办法避免这些问题么?

黄舟黄舟2835 days ago632

reply all(7)I'll reply

  • 伊谢尔伦

    伊谢尔伦2017-04-10 12:45:00

    var console=console||{log:function(){}}

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 12:45:00

    HTML5 Boilerplate默认一个处理所有的console call的fallback。
    以下摘自:https://github.com/h5bp/html5-boilerp...

    (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;
        }
    }());

    reply
    0
  • 阿神

    阿神2017-04-10 12:45:00

    代码上线之前没走打包流程么?

    开发代码->线下压缩打包->线上

    直接在压缩打包的时候自动去掉console和注释就可以了

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 12:45:00

    用ant做一个简单的发布流程吧
    https://github.com/hellolibo/mbb-buil...

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 12:45:00

    参考:
    http://patik.com/blog/complete-cross-...
    http://benalman.com/projects/javascri...

    reply
    0
  • 黄舟

    黄舟2017-04-10 12:45:00

    加一段
    try{
    console.log();
    }catch(e){
    ....
    }

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 12:45:00

    <!--[if IE]>
        <script type="text/javascript">
             var console = { log: function() {} };
        </script>
    <![endif]-->
    

    reply
    0
  • Cancelreply