Javascript 编写和下载文件客户端交叉浏览器

Javascript 编写和下载文件客户端交叉浏览器,javascript,php,jquery,html,html5-filesystem,Javascript,Php,Jquery,Html,Html5 Filesystem,我有一个程序,用户在其中执行一些操作(即单击几个按钮)。我想记录他们的点击和他们点击的按钮,以允许用户在点击一个单独的“下载”按钮时下载一个带有点击记录的文本文件。我查看了HTML5的文件系统API,但它们似乎没有跨浏览器支持。理想情况下,我希望整个文件生成和下载方案完全是客户端的,但我也愿意接受服务器端的想法 TL;DR:本质上,我在Vanilla JS或jQuery中寻找一个与Java的FileWriter、FileReader、ObjectOutputStream和ObjectInputS

我有一个程序,用户在其中执行一些操作(即单击几个按钮)。我想记录他们的点击和他们点击的按钮,以允许用户在点击一个单独的“下载”按钮时下载一个带有点击记录的文本文件。我查看了HTML5的文件系统API,但它们似乎没有跨浏览器支持。理想情况下,我希望整个文件生成和下载方案完全是客户端的,但我也愿意接受服务器端的想法

TL;DR:本质上,我在Vanilla JS或jQuery中寻找一个与Java的FileWriter、FileReader、ObjectOutputStream和ObjectInputStream等价的东西(我想远离php,但我会把它作为最后一个选项)


另外,为什么不是所有浏览器都支持文件系统api?(我猜这会使MSWord和页面与所有可能出现的开源客户端文本编辑器一起倒闭。)

不幸的是,HTML5文件系统是,长话短说FF拒绝实现的,因为他们声称你在文件系统API中所能做的一切都可以在HTML5 Indexeddb中实现(这基本上是正确的)。请查看更多关于FF为什么没有实现的信息。我不知道IE的故事。(我可能已经解释了为什么FireFox没有实现,我仍然很沮丧,因为你不能在indexeddb中做你在新的“Chrome文件系统API”中可以做的一切。)

通常情况下,如果这三个浏览器中有两个实现了某个规范,它将保留在该规范中。否则,该规范将成为孤立的规范。但是,我相当确定,文件系统api没有发展起来的一个主要原因是,当引入这两个规范时,IndexedDB api()真正发展起来。如果您想要跨浏览器支持,请查看此api

所有这些都表明,如果您仍然使用一些开发人员编写的文件系统api,那么文件系统api实际上不会为您提供流。您必须在给定fileWriter对象的给定文件中不断添加事件。然后您必须读取整个文件,并通过ajax请求发送到服务器,然后从服务器已成功上载

更好的方法是使用IndexedDB APIB,如上所述

  • 打开一个数据库
  • 在升级数据库中创建对象存储
  • 启动事务并请求执行一些数据库操作,如添加或检索数据
  • 通过侦听正确类型的DOM事件,等待操作完成
  • 做点什么 带有结果(可在请求对象上找到)
  • 这里有一些关于IndexedDB的教程


    至于向用户提供该文件,如前所述,您必须将该文件上载到服务器并在“下载”时下载请求。不幸的是,您必须欺骗用户,使其获得机器上已有的数据。无论如何,希望这一切都能有所帮助。

    记录单击需要写入文件或数据库。我选择后者。使用DB不会依赖于跨浏览器依赖性。我真的希望使用写入文件方法。我没有访问权限对于db来说,我的Web服务器范围有限,我希望主要通过客户端运行此网页。此外,如果我的用户主要使用chrome或chrome操作系统,是否有办法专门针对他们的浏览器执行此客户端操作?我始终可以根据他们的浏览器将普通页面重定向到不同版本的pageYou c一个关于使用平面文件数据库的研究。谷歌这个词,你会发现很多结果。这就是其中之一