2017-02-05 127 views
0

我有一个页面,其中包含一个允许按地址下载XML文件的按钮。 一开始连接到按钮的js代码是:下载XML而不是打开

function downloadURI(uri, name) { 
    window.location = uri; 
} 

但是,所有的浏览器打开文件,而不是下载它。然后我试着用这段代码:

function downloadURI(uri, name) { 
    var link = document.createElement("a"); 
    link.download = name; 
    link.href = uri; 
    link.click(); 
} 

它适用于IE,Edge,Opera和Chrome,但不适用于Firefox。任何人都可以帮我解决它吗?

回答

1

Firefox不喜欢点击不在文档中的链接。因此,链接追加到document.body(或其他)之前link.click调用(再后来删除它,也许一个小setTimeout延迟后),如:

function downloadURI(uri, name) { 
    var link = document.createElement("a"); 
    link.download = name; 
    link.href = uri; 
    document.body.appendChild(link); 
    link.click(); 
    setTimeout(function() { 
    documet.body.removeChild(link); 
    }, 50); 
} 

如果没有在您的设置工作,我可靠地做到这一点的方式是让用户点击链接而不是按钮,并且按照名称链接目标隐藏iframe,并且对链接请求的响应包含Content-Disposition: attachment; filename=foo标题,该标题告诉浏览器下载而不是打开。

+1

或者只是为点击设置一个事件侦听器,然后在该事件侦听器中删除它。 –

+1

@ibrahimmahrir:根据我的经验,这太快了。以上将在点击的默认操作已经启动时执行。 –

相关问题