IE получить параметры URL не удалось - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть функция, которая должна получать параметры URL, но не работает в IE (используется только 11).Сначала я думал, что это из-за некоторых новых функций и синтаксиса ES6, поэтому написал его для ES5.Однако это все еще не работает.Кто-нибудь знает, что можно сделать или исправить, чтобы сделать эту работу над действительно старым унаследованным проектом.Я попробовал полифилл из MDN для 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 голосов
/ 17 сентября 2018

Object.assign не работает в IE, поскольку он не является частью ES5.

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

В нижней части страницы находится полифилл

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;
...