文件协议下的 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。

【讨论】:

storageSessionlocalStorageglobalStorage 不同吗?我以为 Gecko 是故意把它从 file:// 中删除的。

以上是关于文件协议下的 Javascript/HTML 存储选项 (file://)的主要内容,如果未能解决你的问题,请参考以下文章

动态网络下的极致隐匿?NA DFS去中心化存储协议助推NA(Nirvana)Chain成为企业级隐私网络

LDAP 概念

Linux菜鸟成长日记 ( Linux 下的 ftp 文件传输协议 )

[ ceph ] BlueStore 存储引擎介绍

BMJ上线VB Global 分布式存储的新里程碑

2020.2.19 10分钟自建对象存储服务!