跨浏览器javascript下载功能

Posted

技术标签:

【中文标题】跨浏览器javascript下载功能【英文标题】:Cross browser javascript download function 【发布时间】:2013-12-24 08:16:59 【问题描述】:

我正在客户端从我的 json 响应中构建一些内容以显示在 html 表中。 我还有一个下载按钮,点击后应该将文件保存到本地磁盘。我正在从同一个 json 响应即时创建 csvContent。

代码:

<a class="download-page" href="#" onClick="downloadPage();">Download</a>

function downloadPage() 
    window.location.href = 'data:text/csv;charset=UTF-8,'+ encodeURIComponent(csv);
    //window.location.href = "data:text/csv;charset=utf-8," + escape(csv));
    //window.open("data:text/csv;charset=utf-8," + encodeURI(csv))

这仅适用于 chrome 10。某些版本的浏览器根本不支持此功能。 IE是个大问题。但我的大多数用户都使用 IE 9 和火狐。是否有任何跨浏览器功能可以实现这一点。

CSV 数据示例:

"Testcase Reports for : jumashan\r\n
 Total Unique Stimuli : 1\r\n
 Total execution time : 0 Days 0 hours 16 minutes\r\n

 Testcase Name, Count (Pass/Fail/Error/Block), Version Number, Execution Time(HH:MM:SS),
 INIT-CHECK,2( 0 / 0 / 0 / 2 ) ,0,0:16:28,

 Testcase Reports for : prabhaa\r\n
 Total Unique Stimuli : 1\r\n
 Total execution time : 0 Days 1 hours 23 minutes\r\n"

【问题讨论】:

这样的? ***.com/questions/3665115/… @NinjaFart 我已经尝试过了,但它不起作用:( 您能发布一些示例 CSV 数据吗? 出于安全原因,IE 仅支持数据协议的子集。你可以阅读更多关于它的信息here 和 here @NinjaFart 请检查我在上面编辑的示例 csv。我所做的只是格式化 json 对象并根据要求添加“,”。 【参考方案1】:

您可以通过自己在函数中构建内容来轻松获取内容。

对于下载它,只有 Chrome 允许您指定文件名。

其他网络浏览器如 Firefox 尚不提供此功能,如果您希望下载锚点推送下载,您可以调用以下函数(在之前的项目中使用):

window.open( "data:application/octet-stream;charset=utf-8,"+escape(data));

(注意 octet-stream MIME 类型)

“数据”变量包含您要输出的 CSV 数据。

希望这会有所帮助。

【讨论】:

以上是关于跨浏览器javascript下载功能的主要内容,如果未能解决你的问题,请参考以下文章

Javascript添加事件跨浏览器功能实现:使用attachEvent/addEventListener vs inline events

JavaScript 跨浏览器,高分辨率计时器功能(替换Date()。getTime())。

跨浏览器文本到语音 Javascript 库

封装常用的Javascript跨浏览器方法

如何通过javascript插件/扩展程序隐藏地址栏,菜单栏等来操纵跨浏览器窗口?

Jsonp实现跨域访问