我有一个用户执行某些操作的程序(即点击几个按钮)。我想记录他们的点击次数和他们点击的按钮,以便用户在点击单独的“下载”按钮时下载一个带有点击记录的文本文件。我查看了HTML 5的文件系统API,但它们似乎没有跨浏览器支持。理想情况下,我希望整个文件生成和下载方案完全是客户端的,但我也对服务器端的想法持开放态度。
TL; DR:基本上我正在寻找与Vanilla JS或jQuery中的Java的FileWriter,FileReader,ObjectOutputStream和ObjectInputStream相当的(想要远离php,但我会将它作为最后一个选项使用) 。
另外,为什么并非所有浏览器都支持文件系统API? (我猜这会使MSWord和Pages与所有可能出现的开源客户端文本编辑器破产。)
答案 0 :(得分:0)
不幸的是HTML5文件系统是no longer a part of the spec,长篇短文FF拒绝实施,因为他们声称你可以在文件系统API中做的所有事情都可以在HTML5 Indexeddb中实现(这大部分都是真的)。有关FF未实现的原因,请参阅this blog post。我不知道IE的故事。 (我可能已经夸大了为什么FireFox没有实现,我仍然感到沮丧,因为你无法在indexeddb中完成所有你可以在noew“Chrome文件系统API”中做的事情)
通常,如果这三个浏览器中的两个实现规范,它将保留在规范中。否则该规范将成为孤儿。但是,我相当肯定文件系统api没有起飞的一个重要原因是因为IndexedDB API(caniuse IndexedDB)在引入两个规范时真的起飞了。如果您想要跨浏览器支持,请查看此api。
如果你仍然在文件系统api上设置一些开发人员编写了nice wrapper around the IndexedDB,那么文件系统api实际上并不会为你提供流。在给定fileWriter对象的情况下,您必须继续将事件附加到给定文件。然后你必须阅读整个文件并通过ajax请求发送到服务器,然后在成功上传后从服务器下载。
更好的途径是使用developer.mozilla
中所述的IndexedDB apiwhich
- 打开数据库。
- 在升级数据库中创建对象库。
- 启动事务并发出请求以执行某些数据库操作,例如添加或检索数据。
- 通过聆听正确的DOM事件等待操作完成。
- 做点什么 结果(可以在请求对象上找到)。
醇>
以下是有关IndexedDB的几个教程。
至于向用户提供该文件,如前所述,您必须将文件上传到服务器并在“下载”请求下载。不幸的是,你必须欺骗用户给他们机器上的数据。无论如何,希望这一切都有所帮助。