Firefox无法将正确的文件下载到计算机

时间:2018-10-02 15:17:37

标签: javascript reactjs d3.js react-router

我有一个构建的React应用程序,该应用程序使用Redux,React Router v4和d3进行数据可视化。 我的应用程序包含一个力向图,一个表和一个直方图。这些视图中的每个视图都包含可单击的节点,表格单元格和栏,单击这些节点时,文件应下载到用户的计算机上。我最近将firefox更新到最新版本62.0.2,下载不再能按预期运行,但是在Chrome中仍然可以正常使用。 这些文件与应用程序位于同一域,并且我对下载进行了编码,使其具有以下功能:

    let newlink = document.createElement('a');
    newlink.setAttribute('download', 
 'https://www.example.com/docs/xml/file1.xml');
    newlink.setAttribute('href', 'https://www.example.com/docs/xml/file1.xml');
    newlink.setAttribute('target', '_blank');
    document.body.appendChild(newlink);
    newlink.click();

firefox在做什么,是在我的应用程序根目录而不是在url变量(例如https://www.example.com/docs/xml/file1.xml)中下载index.html文件。对话框显示实际上是在尝试使用正确的名称保存文件(Firefox已自动用下划线替换'/'来保存文件。域是正确的,但该位置不包含文件的完整URL。完整的网址以某种方式被砍掉了吗?

对话框上的类型为HTML(不正确,我的所有文件均为xml或txt),如果用户选择“保存”或“打开”,它将保存index.html或打开空白/黑色网页。我发疯了,想弄清楚这里正在发生什么。请帮忙!

enter image description here

1 个答案:

答案 0 :(得分:0)

最终在Firefox中解决此问题的方法是,通过导航到about:serviceworkers(在Firefox中)从应用程序的域中注销服务工作者。然后,我在UI代码中注释掉了注册服务工作者函数,因为无论如何我都没有将它们用于此应用程序。无论出于何种原因,服务人员都会拦截文件下载,并导致浏览器下载index.html文件而不是文本文件。完成这两项操作后,文件已正确下载。如果有人知道为什么会这样,我希望发表评论。