解决低版本IE下,console报错未定义

摘要:因为公司常常要求支持IE浏览器,测试人员会使用低版本的IE进行操作。如果js代码中含有console.log进行调试,在低版本IE下会报错

因为公司常常要求支持IE浏览器,测试人员会使用低版本的IE进行操作。
如果js代码中含有console.log进行调试,在低版本IE下会报错


错误如下



原因

低版本IE6/7/8/9浏览器是没有定义console对象的,所以代码会中断执行。


解决方法

添加如下代码定义console

;(function(g) {
    'use strict';
    var _console = g.console || {};
    var methods = ['assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'exception', 'error', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn'];

    var console = {version: '0.2.0'};
    var key;
    for(var i = 0, len = methods.length; i < len; i++) {
        key = methods[i];
        console[key] = function (key) {
            return function () {
                if (typeof _console[key] === 'undefined') {
                    return 0;
                }
                // 添加容错处理
                try {
                    Function.prototype.apply.call(_console[key], _console, arguments);
                } catch (exp) {
                }
            };           
        }(key);
    }
    
    g.console = console;
}(window));

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_8158