IE10及其以下版本不支持Javascript Map对象(“Map”未定义)

项目js代码中使用了Javascript Map对象,代码在Chrome浏览器中可以正常运行,但在IE10及其以下版本中报“Map”未定义错误。


在MSDN中找到了IE各个版本浏览器对Map对象的支持情况,详细信息如下:

Language element IE 6、IE7 IE8 IE9 IE10 IE11 Edge
Map Object N N N N Y Y


可以看到IE10及其以下版本均不支持Javascript Map对象,同时文档中也提到不支持Windows 8(Not supported in Windows 8.)但IE11Edge是支持该对象的。

由于代码中只使用了Map对象的get()和set()方法,其他方法没有使用,所以采用自定义Map对象解决IE10及其以下版本浏览器运行出错问题。当判断浏览器版本为IE10及其以下版本时,使用自定义的Map对象替换Js Map对象。JavaScript代码如下:

// 判读是否为IE浏览器
function isIE() {
    return navigator.appName == "Microsoft Internet Explorer";
}

// 判断IE版本
function IEVersion() {
    return parseInt(navigator.appVersion.split(";")[1].replace(/[ ]/g, "").replace("MSIE",""));
}

// 自定义Map对象
function Map() {

    this.keys = new Array();
    this.data = new Object();

    this.set = function(key, value) {
        if (this.data[key] == null) {
            if (this.keys.indexOf(key) == -1) {
                this.keys.push(key);
            }
        }
        this.data[key] = value;
    }

    this.get = function(key) {
        return this.data[key];
    }
}

// new Map()
var map = new Map();

你可能感兴趣的:(javascript)