IE9的console不兼容问题

今天遇到一个很难受的问题,项目要求兼容 IE9,在登录时总是有一个按钮点击没反应,但是只要 f12 开发调试工具就好用,其他的浏览器比如 chrome 都没问题,想了一上午解决方法,问题的关键就是为啥只要打开调试工具就好使!

后来在网上查了很多资料,才发现一个问题就是在 IE8 / 9 上在不打开调试工具的情况下window 上是没有 console 这个属性的!在打开调试工具的时候会给 window 再挂载上 console 属性,所以需要兼容 console 。。。知道了问题所在就好解决了,下面贴一下兼容性代码:

(function() {
    var method;
    var noop = function () {};
    var methods = [
        'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
        'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
        'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
        'timeline', 'timelineEnd', 'timeStamp', 'trace', 'warn'
    ];
    var length = methods.length;
    var console = (window.console = window.console || {});

    while (length--) {
        method = methods[length];

        // Only stub undefined methods.
        if (!console[method]) {
            console[method] = noop;
        }
    }
}());

// 注:经验证在IE7/8/9下有效。

虽然 IE11 以下的版本离我们越来越远,但是浏览器的兼容性问题确实是一场持久战!

你可能感兴趣的:(IE9的console不兼容问题)