IE获取URL参数失败

时间:2018-09-17 10:41:18

标签: javascript url ecmascript-6 ecmascript-5

我有一个应该获取URL参数但仅在IE中中断的函数(使用11)。我最初以为这是由于ES6的一些新功能和语法,所以为ES5编写了它。但是它仍然无法正常工作。有谁知道在一个真正古老的遗留项目上可以做什么或解决这个问题。我确实尝试过MDN的polyfill用于Object.Assign。

ES6:

getQueryURLParams = function(pName) {
   var urlObject = location.search
   .slice(1)
   .split('&')
   .map(function(element ) { 
    return element.split('='); 
})
.reduce(function(obj, pair) {  

  const key = pair.map(decodeURIComponent)[0];
  const value = pair.map(decodeURIComponent)[1];

  return Object.assign({}, obj, { [key]: value });
}, {});

return urlObject[pName];
};

ES5版本:

getQueryURLParams = function(pName) {

var urlObject = location.search
.slice(1)
.split('&')
.map(function(element ) { 
    return element.split('='); 
})
.reduce(function(obj, pair) {  

  const key = pair.map(decodeURIComponent)[0];
  const value = pair.map(decodeURIComponent)[1];

  return Object.assign({}, obj, { [key]: value });
}, {});

return urlObject[pName];
};

我感谢任何建议

1 个答案:

答案 0 :(得分:0)

Object.assign不在ES5中,因为它不属于ES5。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

在页面底部,有一个polyfill

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill

[key]: value

这也不是有效的ES5。

你可以写

var result = {}
Object.keys(obj).forEach(function(k){
    result[k] = obj[k];
})
result[key] = value;

return result;