javascript - 在 Internet Explorer 上获取 csv 数据失败

标签 javascript internet-explorer d3.js fetch-api

我刚刚尝试使用 d3.js v5 获取 CSV 文件。数据提取在除 Internet Explorer 10+ 之外的所有浏览器中都可以正常工作。

d3.csv("test.csv").then(function (data) {
        console.log(data);
});

这表明错误提取未在 Internet Explorer 中定义。

我正在使用 d3.v5.min.js。

最佳答案

d3.csv(以及所有其他 D3 获取方法)在内部使用 Fetch API。如果您查看 MDN page ,在浏览器兼容性表中,您会看到 Internet Explorer 不支持 Fetch API(如您在问题中所说,任何版本,不仅是 10+)。

因此,解决方案是为 Fetch 使用 polyfill(对于 promises 也是如此,请参阅下面的评论)。在线有多种选择。

作为一个建议,不要嗅探用户代理,而是尝试检查浏览器是否支持 Fetch。可能最简单的方法是使用 window.fetch。以下代码段将在大多数浏览器中记录一个真值,在 IE 中记录一个假值(以及在其他不支持 Fetch 的浏览器中,如果存在):

console.log(window.fetch)

因此,在您的代码中,您执行如下操作:

if(!window.fetch){
    //load the polyfill here
};

关于javascript - 在 Internet Explorer 上获取 csv 数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56847427/

相关文章:

javascript - 使用 D3 创建具有复杂数据集的灵活条形图

javascript - Polymer 中的 <content> 和 <shadow> 标签有什么区别?

javascript - RxJS: BehaviorSubject 退订

javascript - 分割字符串并用复选框显示结果

javascript - 在 IE Edge 中的 tinyMCE 编辑器上输入内容时出现严重滞后

javascript - 如何防止退格键向后导航?

javascript - Chart.ygrids.remove 和 Chart.ygrids.add 不能一起工作

javascript - AngularJS:即时更改 ng-animate css

.net - Cookie 在 IE 中的选项卡之间没有始终如一地共享

d3.js - 在D3js中,如何累积添加每个第n个绑定(bind)数据值?