文件协议下的 Javascript/HTML 存储选项 (file://)
Posted
技术标签:
【中文标题】文件协议下的 Javascript/HTML 存储选项 (file://)【英文标题】:Javascript/HTML Storage Options Under File Protocol (file://) 【发布时间】:2011-08-20 07:39:16 【问题描述】:我正在开发一个 html 应用程序,它本质上是一系列页面,就像一本书。在这个应用程序中,我想跨页面存储几个 javascript 变量。想想诸如页面阅读、书签等之类的事情。当通过 HTTP 查看此应用程序时,我计划将 localStorage 与旧浏览器(globalStorage、userData 等)的后备一起使用。
但是,如果通过“file://”访问文件,例如从 CD 上查看文件,这将完全崩溃。似乎大多数(如果不是全部)localStorage 解决方案在文件协议下不起作用。 Cookie 不是“file://”下的选项。
关于如何在通过“file://”查看 html 页面时跨 html 页面持久保存 JavaScript 数据有什么想法吗?
它实际上只需要在当前用户会话中可用。我真的不想使用框架,但到目前为止,我想不出另一种方法来实现这一点
【问题讨论】:
【参考方案1】:我的一个工作伙伴通过分享他使用 window.name 跨单个窗口/会话的页面存储数据的实现帮助我解决了这个问题。
可以在此处找到类似的实现(以及围绕该方法的讨论):http://ajaxian.com/archives/whats-in-a-windowname
我一直在对这种方法进行的初步测试看起来很有希望。我在以下浏览器上的文件协议(从桌面加载页面,a.k.a. - “file:\”)下对此进行了测试。它对所有人都有效!
IE 6 IE 7 IE 8 IE 9 FF 3.6 FF 4 铬 11 歌剧 10 Safari 4我尚未对您可以在此处存储多少数据进行任何测试,但互联网似乎同意 2 MB 的值。
来源、链接、更多信息
JavaScript Programmer's Reference (Google Books) Cookie-less Session Variables in JavaScript - Sitepoint Article【讨论】:
我已经整理了一个演示(用于在您从一个页面移动到另一个页面时保持持久的 sidenav 滚动相同):phrogz.net/tmp/data-through-window.name 已测试可与 Chromev21、FFv14、IE8 和 IE9 一起使用http://
和 file://
很棒的演示!我可能会建议回退到sessionStorage
。如果将来的浏览器版本决定插入window.name
“漏洞”,这将为您提供一些额外的保障。【参考方案2】:
在 Webkit (Chromium 12.0.742.21 dev-m) localStorage over file 协议对我来说效果很好。
在 Gecko 上它是 reported,应该很快就会改进。
您甚至可以找到解决方法,但我建议您使用 Chrome 夜间构建进行开发。因此,您将来不会浪费时间将其移回 localStorage。
【讨论】:
storageSession
与 localStorage
或 globalStorage
不同吗?我以为 Gecko 是故意把它从 file://
中删除的。以上是关于文件协议下的 Javascript/HTML 存储选项 (file://)的主要内容,如果未能解决你的问题,请参考以下文章
动态网络下的极致隐匿?NA DFS去中心化存储协议助推NA(Nirvana)Chain成为企业级隐私网络