应用程序和浏览器之间的 HTML 5 本地存储

Posted

技术标签:

【中文标题】应用程序和浏览器之间的 HTML 5 本地存储【英文标题】:HTML 5 local storage between app and browser 【发布时间】:2014-02-15 02:35:41 【问题描述】:

是否可以从移动应用 (ios/android) 和网站访问相同的本地存储?例如,test.com 将值 A 存储在本地存储中,然后移动应用程序能够访问该值吗?

【问题讨论】:

你的意思是 test.com 在股票浏览器中运行,并使用 html5 本地存储 API 存储一些数据,然后 test.com 被加载到它自己的“包装”应用程序中(不是股票浏览器),包装应用程序中的实例是否可以访问之前从浏览器存储的相同数据? chrome 提供这种功能developer.chrome.com/extensions/storage.html 但不提供 HTML5。 @Patrick 刚刚对此进行了测试,请参阅我的答案的编辑。 【参考方案1】:

HTML5 本地存储 API 不规定内部存储格式。因此会导致 ad-hoc 代码使用内部存储格式。由于缺乏内部格式规范,跨浏览器的可移植性可能是一个问题。如果您的移动应用程序(本机应用程序)将某些内容写入本地存储,您应该确保格式 100% 符合浏览器的内部存储格式,因为您不希望浏览器在必须读取数据时与数据混淆.当浏览器应用程序和移动应用程序都在运行时可能会出现意外,因为它们都可以更新数据。如果有冲突的更新,谁会赢?如果浏览器和移动应用程序碰巧同时写入数据,您如何确保数据写入不会出现乱码文件?你如何防止这种竞争条件?至少 HTML5 没有锁定机制!看着所有这些复杂性,我相信它不值得复杂性和痛苦!

【讨论】:

存储格式无关紧要,只要原生应用和浏览器都可以访问相同的存储值。 @Patrick 存储格式绝对重要。当我们必须从 HTML5 应用程序中存储一些值时,我们使用 JS API。当我给它一个javascript整数时,我不知道它将如何将它存储在磁盘上——大端、小端、某种序列化对象、其他二进制格式——我完全不知道。移动应用程序无法读取和使用该值,除非它知道该值以何种格式存储。对于移动应用程序存储值和 HTMl5 应用程序读取它,移动应用程序应该坚持 HTML5 磁盘存储格式。因此存储格式对于两用非常重要。【参考方案2】:

我认为您的独立网络应用无法访问您从浏览器存储的相同数据。

至少在独立应用程序的情况下,此数据存储在该应用程序内部存储文件夹内的 sqlite3 db 中,因此 /data/data/com.your.package/databases/webdata.db 我忘记了确切的名称,但它在某处的数据库中。

我认为浏览器会做类似的事情,但将其存储在它自己的存储区域/data/data/com.android.browser/databases/ 中。我认为浏览器或独立应用程序不会花时间为手机上每个可能的应用程序遍历所有数据库来查找数据。 (如果可以的话,我认为这些文件实际上对库存设备上的特定应用程序是私有的)

编辑:结果在。

不,您的应用无法访问从普通浏览器(或任何其他浏览器)存储的键/值对。反之亦然,没有其他浏览器可以访问您的独立应用程序存储的数据。

【讨论】:

你能帮我解决这个***.com/questions/58304102/… 吗?

以上是关于应用程序和浏览器之间的 HTML 5 本地存储的主要内容,如果未能解决你的问题,请参考以下文章

HTML5的5种存储方式详解

cookie sessionStorage localStorage之间的区别和使用

cookie sessionStorage localStorage之间的区别和使用

cookie sessionStorage localStorage之间的区别和使用

在浏览器内存中存储 JSON 数据

HTML5的5大存储方式总结