我有一个应该获取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];
};
我感谢任何建议
答案 0 :(得分:0)
Object.assign不在ES5中,因为它不属于ES5。
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;