如何使用JavaScript在客户端保存文件?

我想将JSON对象保存到客户端的文件中以保留它以供将来使用,我尝试过以下行

window.open("data:text/json;charset=utf-8," + escape(JSON.stringify(obj)));

它的工作原理!! 问题是它询问用户保存文件的位置和名称。 我想要的是我希望用户完全没有意识到某些东西正在保存以备将来使用,或至少保持最小的用户点击次数。

如何在window.open() 静态提供文件名和位置

提前致谢,

编辑

只是为了说清楚“我不存储任意或不需要的数据。所有用户都是系统的注册用户。” 在正常情况下,我不会在本地存储任何东西。 但是,如果在表单提交时网络不可用,我想存储一些JSON对象。

一个明显的解决方案是使用cookie。 由于用户的浏览器设置可能会意外删除Cookie。 我需要一种方法来保持数据,直到网络可用。 拥有跨浏览器支持会更好。

我想要跨浏览器支持的值,即使用户更改浏览器他/她应该能够从他离开的地方继续。 我将信息存储在JSON对象中。

我认为用户不希望Web应用程序以这种方式与同一台机器上的其他浏览器共享信息。 此外,我怀疑许多用户过于频繁地更改浏览器以保证这样的隐私侵入function。 您应该考虑在服务器上存储信息(通过强制用户注册或使用OpenID,Google,Facebook等常用帐户),或者通过设置cookie或使用上述存储技术在客户端存储信息。

如果您真的想将存储的信息限制在同一台机器上的浏览器上,并且不希望允许同一用户在不同的机器上访问,您可以查看似乎已保存浏览器的LSO (’Flash cookies’)独立。 您不需要任何用户确认来存储LSO。

更新:浏览器不支持Flash,因为它曾经并且现在还没有广泛使用,所以LSO不再是一个好的选择。

如果要保留数据,然后使用存储API ,则无法使用用户的文件系统玩游戏。

你不能这样做,这是客户端的安全问题。

FileSystem API HTML5规范的一部分,可以在现代浏览器中访问特定网站的沙箱中的文件系统,这是一个很好的教程: http : //www.html5rocks.com/en/tutorials/file/filesystem/

但是我会使用LocalStorage API来获得更好的浏览器支持: http : //www.w3schools.com/html5/html5_webstorage.asp

FSO.js包装临时/持久性FileSystem API,允许您轻松读取/写入文件……目前仅由Chrome支持,但规范正在迅速发布。 🙂

正如评论中已经提到的那样,出于明显的安全原因,如果没有明确的用户同意,这是不可能的。 但是,正如评论中所提到的,您可以将信息存储在cookie中,然后在用户返回时可以检索该信息。

像这样的事情会做到这一点

 document.cookie="cookie_name="+required_value+"; expires=Monday, 04-Dec-2011 05:00:00 GMT"; 

显然,只要您需要信息持续,过期时间就会到来。

希望有所帮助