文件协议下的Javascript/HTML存储选项(文件://)

文件协议下的Javascript/HTML存储选项(文件://),javascript,html,local-storage,file-uri,Javascript,Html,Local Storage,File Uri,我正在开发一个html应用程序,它本质上是一系列像书一样的页面。在这个应用程序中,我想跨页面存储几个JavaScript变量。想想看,比如页面读取、书签等。当通过HTTP查看这个应用程序时,我计划使用localStorage和旧浏览器(globalStorage、userData等)的回退功能 但是,如果通过“file://”访问文件,例如从CD上查看文件,则此功能将完全失效。似乎大多数(如果不是全部的话)本地存储解决方案都不能在文件协议下工作。Cookie也不是“file://”下的选项 关于

我正在开发一个html应用程序,它本质上是一系列像书一样的页面。在这个应用程序中,我想跨页面存储几个JavaScript变量。想想看,比如页面读取、书签等。当通过HTTP查看这个应用程序时,我计划使用localStorage和旧浏览器(globalStorage、userData等)的回退功能

但是,如果通过“file://”访问文件,例如从CD上查看文件,则此功能将完全失效。似乎大多数(如果不是全部的话)本地存储解决方案都不能在文件协议下工作。Cookie也不是“file://”下的选项

关于如何在通过“file://”查看html页面时跨html页面持久保存JavaScript数据的任何想法?

它实际上只需要在当前用户会话中可用。我真的不想使用框架,但到目前为止,我想不出另一种方法在Webkit(Chromium 12.0.742.21 dev-m)上实现这一点

在壁虎上,它是,应该很快得到改善


您甚至可以找到一个解决方法,但我建议您使用Chrome nightly build进行开发。因此,您以后将不会浪费时间将其移回本地存储。

我的一位同事通过分享他使用window.name跨单个窗口/会话的页面存储数据的实现,帮助我解决了这个问题

类似的实现(以及关于方法的讨论)可以在这里找到:

我对这个方法做的初步测试看起来很有希望。我在以下浏览器上使用文件协议(从桌面加载页面,也称为“文件:\”)对此进行了测试。这对所有人都有效

  • IE 6
  • IE 7
  • IE 8
  • IE 9
  • FF 3.6
  • FF 4
  • 铬11
  • 歌剧10
  • 狩猎4
我还没有做过任何关于你可以在这里存储多少数据的测试,但是互联网似乎同意2MB的值

来源、链接、更多信息


  • storageSession
    是否与
    localStorage
    globalStorage
    不同?我以为Gecko故意把它从
    文件中漏掉了://
    。我已经制作了一个演示(用于在你从一页移动到另一页时保持一个持久的sidenav以相同的方式滚动):测试了Chromev21、FFv14、IE8和IE9在
    http://
    文件://
    上的使用效果非常好!我可能建议退回到
    会话存储
    。如果将来的浏览器版本决定堵塞
    窗口.name
    “漏洞”,这将为您提供一点额外的保险。