javascript – 触发文件下载,无需任何服务器请求

前端之家收集整理的这篇文章主要介绍了javascript – 触发文件下载,无需任何服务器请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问候,

我在一个基于JS的应用程序上进行一些复杂的工作,并在< div>上记录一些信息(实际上是数百行).

我的目标是拥有一个“保存日志”按钮,触发浏览器的下载对话框来保存我的日志记录< div>的内容.

更简洁,这些是这个功能的要求:

>最终用户必须完全控制文件.他/他应该能够保存/存档以供将来参考,将其邮寄给支持部门以获得解决某些问题的帮助,将其重新加载到应用程序等.因此,HTML5的Web存储API在此无法帮助(数据将被保存到一个浏览器定义的位置,除了创建它的JS之外,不容易被检索).
>应用程序必须能够脱机工作(至少在某些情况下).那么和效率就是为什么我抛弃了将数据发送到服务器的想法,以便通过“Content-disposition”头获取数据.
>文件应该被正确地标记为文本/纯文本,所以浏览器可以建议默认动作(如“打开记事本”),就像普通文件下载一样.这可以看作是第一个要求的一个特定方面.
>告诉用户将< div>的内容复制粘贴成为一个文本编辑器,并从中保存它绝对是可怕的,正是为什么我试图避免.

我一直在这个网站上搜索,在WHATWG和W3C网站上,一般在网上搜索,没有成功.这是否可行?

我最接近的是使用数据:url.我的第一次尝试,执行POST操作,无法获得内容类型,所以它将回到UA的启发式.我通过设置< a>链接看起来像一个按钮,并给它一个类型属性,但是然后UA将玩得太聪明,并呈现内容,而不是保存(并要求用户从浏览器保存文件在这一步变得比使用副本更糟糕粘贴方法,因为浏览器之间的页面保存差别很大).

如果只是一些方法来组合数据:url与“内容处置”一样的提示,事情可能会很顺利.

问候,
Herenvardo

解决方法

不幸的是,这不是您可以使用普通浏览器功能.像flash或浏览器专用的插件会让你得到你所需要的,但javascript中的安全限制不会让你下载浏览器中创建的任意数据.

此外,所有浏览器/版本组合都不支持“数据”网址.我不知道您的用户是否受限于他们正在使用的浏览器,但这可能会限制您可以使用该解决方案.

原文链接:https://www.f2er.com/js/154623.html

猜你在找的JavaScript相关文章