获取 polyfill 在 Edge(或 IE)上不起作用

Posted

技术标签:

【中文标题】获取 polyfill 在 Edge(或 IE)上不起作用【英文标题】:Fetch polyfill not working on Edge (or IE) 【发布时间】:2018-12-18 09:24:27 【问题描述】:

我正在尝试使用 fetch polyfill“whatwg-fetch”发布请求(表单)。虽然这适用于 Chrome 和 FF,但它似乎不适用于 IE 和 Edge。

import 'whatwg-fetch';
const dataObject = 
    'a' : 'b'

const params = new URLSearchParams();
params.append('someData', JSON.stringify(dataObject));                         

fetch(url, 
  method: 'POST', 
  mode: 'cors', 
  cache: 'no-cache', 
  credentials: 'same-origin',
  headers: 
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
  ,
  redirect: 'follow',
  referrer: 'no-referrer', 
  body: params, 
  ).then((res) => 
    console.log(res);
  ).catch((e) => 
   console.log(e);
);

在 IE 和 Edge 中,此代码不发送请求并捕获异常:

e Failed to execute 'fetch()' on 'Window': Invalid argument. 

有什么想法吗?

【问题讨论】:

data 定义在哪里? @apokryfos 谢谢,修复代码。 好吧 URLSearchParams 在 IE 和 Edge 中不受支持。尝试使用query-string 包,看看它是否能解决问题。 【参考方案1】:

您好 - 看来确实是加载问题。

你试试看

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js"></script>index.html 中检查它是否正常工作。

【讨论】:

向页面添加新的脚本标签是不可能的,我尝试将 babel-polyfill 添加到 webapack 'entry' 并作为 JS 文件中的导入,但它仍然不起作用。 【参考方案2】:

我遇到了完全相同的问题,在我的情况下,我帮助添加了这样的标题和 .toString() ... headers: 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', body: form.toString()** ...

【讨论】:

以上是关于获取 polyfill 在 Edge(或 IE)上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

获取参数在 Edge 14 上不起作用的 API

如何在 Edge 中添加 polyfill 以支持 finally()?

edge浏览器怎么获取地图上的数据

vue项目在IE浏览器打不开问题

Vue<解决IE,Edge浏览器打不开问题>

ie7、ie8 和 ie9 的最佳占位符 polyfil 脚本 [关闭]