The Wayback Machine - https://web.archive.org/web/20080915014027/http://developer.mozilla.org:80/cn/DOM/Storage

Mozilla.com

  1. MDC
  2. 首页
  3. DOM
  4. Storage

Some features of this site require JavaScript.

Storage

« Gecko DOM 参考

该条目记录了 Firefox 2 引入的新特性

摘要

DOM Storage,就是在Web Applications 1.0 specification中介绍的那些存储相关特性集合的名称。相比较在cookies中存储信息来说,DOM Stroage更大、更安全、更易于使用的。目前它只在基于Moziila的浏览器中可以使用,从Firefox2开始。

Note: DOM Storage 与 mozStorage (Mozilla对于SQLite的XPCOM接口)和Session store API(扩展使用的一个XPCOM存储).不同

描述

DOM Storage机制是一种通过字符串形式的名/值对来安全地存储和使用的方法。这个附加功能的目标是提供一个更全面的、可以创建交互式应用程序的方法(包括那些高级功能,例如可以离线工作一段时间)。

目前,只有基于Mozilla的浏览器提供了DOM Storage的实现。不过,Internet Explorer也有一个类似的特性,叫做"userData behavior",他允许你在多重浏览器会话中永久地保存数据。

DOM Storage 是很有用的,因为在任何一段时期都没有一个很好的、只通过浏览器来永久存储合理大小的数据的方法。浏览器cookies 限制了存储容量,而且并没有为组织永久性的数据提供支持,并且其他的方法还需要外部插件来实现(例如Flash Local Storage)。

第一个使用了新的DOM Storage功能(除了Internet Explorer 的 userData Behavior之外)的公共应用程序是由 Aaron Boodman 写的 halfnote(一个便签应用程序) 。在他的程序中,Aaron同时把便签内容保存到服务器上(当Internet连接可用时)和一个本地数据存储中。这就允许用户即便是在不定式发生internet连接中断时,也可以安全的写一些有备份的便签。

不过,在halfnote中表现出来的概念和实现,都还是相对简单的。它的诞生揭示了一种新的、可以在线或离线使用的网络应用程序。

参考

下面的内容都是作为每个window 对象的属性存在的全局对象。这也就是说,可以通过sessionStorage 或者 window.sessionStorage 来访问它们。(这很重要,因为随后你可以使用iframe来存储、访问、添加那些并不是立刻就包含在你页面中的数据。)

sessionStorage

这是一个全局对象(sessionStorage),它含有一个在页面会话有效期内可用的存储区域。只要页面没有关闭,一个页面会话就始终保持着,并且当页面被重新载入或恢复时“复活”。打开一个新的标签页或新窗口都会初始化新的会话。

// 将数据存入当前会话的一个存储中
sessionStorage.username = "John";

// 访问某些已存储的数据
alert( "username = " + sessionStorage.username );

sessionStorage 对象是最有用的,它持有那些应该保存的临时数据,而且一旦浏览器突然被刷新时,要恢复的那些数据,

Note: sessionStorage 还应该有在浏览器崩溃后存储和恢复数据的功能,不过由于 bug 339445 的原因,这个功能到现在还没有在Firefox中实现。这个功能实现之后,sessionStorage的防御功能就十分有用了。

举例:

自动保存文本字段的内容,如果浏览器突然被刷新,就恢复字段内容,这样就不会丢失任何输入了。

 // 获得我们要跟踪的那个文本字段
 var field = document.getElementById("field");
 
 // 看看我们是否有一个autosave的值
 // (这将只会在页面被突然刷新时发生)
 if ( sessionStorage.autosave ) {
     // 恢复文本字段中的内容
     field.value = sessionStorage.autosave;
 }
 
 // 每秒钟检查一次文本字段的内容
 setInterval(function(){
     // 并把结果保存到会话存储对象中
     sessionStorage.autosave = field.value;
 }, 1000);

更多信息:

globalStorage

这是一个全局对象(globalStorage),它维护着各种公共的或者私有的,可以用来长时期保存数据的存储空间(例如,在多重的页面和浏览器会话之间)。

// 可以这样访问那些仅对mozilla.org域上的脚本保存的数据
globalStorage['mozilla.org'].snippet = "<b>Hello</b>, how are you?";

// 可以这样访问为任何网页任何域存储的数据
globalStorage[''].favBrowser = "Firefox";

特别地,globalStorage对象,提供了访问一些不同的可以保存数据的存储对象的方法。例如,如果我们要建立一个可以在域(developer.mozilla.org)下面可以使用globalStorage的网页,我们有下面这些存储对象可以使用:

  • globalStorage['developer.mozilla.org'] - 在developer.mozilla.org下面所有的子域都可以通过这个存储对象来进行读和写。
  • globalStorage['mozilla.org'] - 在mozilla.org域名下面的所有网页都可以通过这个存储对象来进行读和写。
  • globalStorage['org'] - 在.org域名下面的所有网页都可以通过这个存储对象来进行读和写。
  • globalStorage[] - 在任何域名下的任何网页都可以通过这个存储对象来进行读和写。
注意: firefox目前还没有实现globalStorage[tld]globalStorage[] (会抛出一个安全错误),这是由于对于这些名字空间可以进行随意读写的话是有安全漏洞的 更多信息

示例:

下面这些示例,需要你在所有想看到效果的页面中都插入脚本(包括如下所有的代码)。

记录某个指定子域名下面正在访问的用户的username:

 globalStorage['developer.mozilla.org'].username = "John";

跟踪一个用户在你的域名下所访问的所有页面的次数:

 // 由于所有数据都是被当作一个字符串来保存的,所以这里必须使用parseInt
 globalStorage['mozilla.org'].visits =
     parseInt( globalStorage['mozilla.org'].visits || 0 ) + 1;

记录所有你访问的网站:

 globalStorage[''].sites += "," + location.hostname;

更多信息:

Examples

Page last modified 03:30, 10 Jan 2008 by Carrie zhxj?

文件 (0)

 
 
 
Morty Proxy This is a proxified and sanitized view of the page, visit original site.