【问题标题】:IE get URL parameters failingIE 获取 URL 参数失败
【发布时间】:2018-09-17 10:41:17
【问题描述】:

我有一个应该获取 URL 参数的函数,但它只在 IE(使用 11)中中断。我最初认为这是因为一些较新的 ES6 特性和语法,所以为 ES5 编写了它。但是它仍然无法正常工作。有谁知道可以做些什么或修复什么来使这项工作在一个非常古老的遗留项目上工作。我确实尝试了来自 MDN 的用于 Object.Assign 的 polyfill。

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];
};

感谢任何建议

【问题讨论】:

    标签: javascript url ecmascript-6 ecmascript-5


    【解决方案1】:

    Object.assign 在 IE 中不起作用,因为它不是 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;
    

    【讨论】:

      猜你喜欢
      • 2015-12-27
      • 2020-10-25
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      相关资源
      最近更新 更多