Storage 接口

用于脚本在浏览器保存数据。

  • 保存的数据都以“键值对”的形式存在。也就是说,每一项数据都有一个键名和对应的值。
  • 所有的数据都是以文本格式保存
  • 受同域限制 ---- 某个网页存入的数据,只有同域下的网页才能读取,如果跨域操作会报错

只有一个属性:

  • Storage.length ---- 返回保存的数据项个数

有五个方法

  • Storage.setItem()

用于存入数据 ---- 如果储存空间已满,该方法会抛错

该方法没有返回值

它接受两个参数 (两个参数都是字符串。如果不是字符串,会自动转成字符串,再存入浏览器)

  • 第一个是键名 ---- 如果键名已经存在,该方法会更新已有的键值
  • 第二个是保存的数据
  • 支持直接写入
  • // 下面三种写法等价
    window.localStorage.foo = '123';
    window.localStorage['foo'] = '123';
    window.localStorage.setItem('foo', '123');
  • window.sessionStorage.setItem('key', 'value');
    window.localStorage.setItem('key', 'value'); window.sessionStorage.setItem(3, { foo: 1 });
    window.sessionStorage.getItem('3'); // "[object Object]"

Storage.getItem()

用于读取数据

只有一个参数,就是键名 ---- 如果键名不存在,该方法返回null

键名应该是一个字符串,否则会被自动转为字符串

  • window.sessionStorage.getItem('key')
    window.localStorage.getItem('key')

Storage.removeItem()

用于清除某个键名对应的键值

接受键名作为参数 ---- 如果键名不存在,该方法不会做任何事情

  • sessionStorage.removeItem('key');
    localStorage.removeItem('key');

Storage.clear()

用于清除所有保存的数据

该方法的返回值是 undefined

  • window.sessionStorage.clear()
    window.localStorage.clear()

Storage.key()

接受一个整数作为参数(从零开始)

返回该位置对应的键值

  • window.sessionStorage.setItem('key', 'value');
    window.sessionStorage.key(0) // "key"

结合使用 Storage.length 属性 和 Storage.key() 方法,可以遍历所有的键

  • for (var i = 0; i < window.localStorage.length; i++) {
    console.log(localStorage.key(i));
    }

Storage 接口储存的数据发生变化时,会触发 storage 事件

window.addEventListener('storage', onStorageChange);

接受一个 event 实例对象作为参数。这个实例对象继承了 StorageEvent 接口

有以下几个特有的属性,都是只读属性

  • StorageEvent.key ---- 字符串,表示发生变动的键名

如果 storage 事件是由 clear() 方法引起,该属性返回null

特别注意:

它不在导致数据变化的当前页面触发,而是在同一个域名的其他窗口触发

也就是说,如果浏览器只打开一个窗口,可能观察不到这个事件

比如同时打开多个窗口,当其中的一个窗口导致储存的数据发生改变时,只有在其他窗口才能观察到监听函数的执行

可以通过这种机制,实现多个窗口之间的通信

  • function onStorageChange(e) {
    console.log(e.key);
    } window.addEventListener('storage', onStorageChange);
  • StorageEvent.newValue ---- 字符串,表示新的键值

如果 storage 事件是由 clear() 方法 或 删除该键值对 引发的,该属性返回null

  • StorageEvent.oldValue ---- 字符串,表示旧的键值

如果该键值对是新增的,该属性返回null

  • StorageEvent.storageArea ---- 对象,返回键值对所在的整个对象

也说是说,可以从这个属性上面拿到当前域名储存的所有键值对

  • StorageEvent.url ---- 字符串,表示原始触发 storage 事件的那个网页的网址

4

4

4

window.sessionStorage 

保存的数据用于浏览器的一次会话(session),当会话结束(通常是窗口关闭),数据被清空

window.localStorage

存的数据长期存在,下一次访问该网站的时候,网页可以直接读取以前保存的数据

BOM 浏览器对象模型_Storage 接口 - window.sessionStorage - window.localStorage的更多相关文章

  1. BOM 浏览器对象模型_window 对象的常见 window.属性_window.方法

    1. 常用属性 window.devicePixelRatio        像素比 = css / 物理像素 window.scrollX,window.scrollY    滚动条 卷曲距离 if ...

  2. 第一百一十一节,JavaScript,BOM浏览器对象模型

    JavaScript,BOM浏览器对象模型 学习要点: 1.window对象 2.location对象 3.history对象 BOM也叫浏览器对象模型,它提供了很多对象,用于访问浏览器的功能.BOM ...

  3. JavaScript——BOM(浏览器对象模型),时间间隔和暂停

    BOM(浏览器对象模型):能够对浏览器的窗体进行訪问和操作 1.主要的BOM体系: window------------document-------------------------------- ...

  4. JavaScript(二、BOM 浏览器对象模型)

    一.BOM是什么 BOM是browser object model的缩写,简称浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心 ...

  5. BOM浏览器对象模型

    访问和操作浏览器窗口的模型称为浏览器对象模型BOM(Browser Object Model). BOM整体对象图. 核心是window对象: 以下有特殊双重身份: window对象既是ECMAScr ...

  6. javascript之BOM浏览器对象模型引入

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. BOM—浏览器对象模型(Browser Object Model)

     1,javascript   组成部分: 1.ECMAscript(核心标准):    定义了基本的语法,比如:if for 数组 字符串 ... 2.BOM  : 浏览器对象模型(Browser ...

  8. JS第三部分--BOM浏览器对象模型

    一.client系列:宽高边框 二.offset系列:偏移 三.scroll系列 四.BOM的介绍 4.1.打开新窗口 4.2.location对象(本地信息对象) 4.3.history对象 4.4 ...

  9. js BOM浏览器对象模型

    BOM即Browser Object Model,浏览器对象模型,表示浏览器窗口,所有js全局对象.函数以及变量均是window 对象的成员. 对于不同的浏览器,表示宽度和高度的方法不同: 对于IE9 ...

随机推荐

  1. 验证性控件的使用--验证两个文本框至少有一个不为空CustomValidator

    转:http://blog.163.com/zhaowencong_2010/blog/static/20402815220122103155643/ 有时候我们在注册一个帐号时要求我们留下电话号码, ...

  2. CAS server打包小白教程

    如题,cas是耶鲁大学的一个开源的登录系统,功能齐全,受到很多企业的青睐. 耶鲁大学都不知道那你太out了,我告诉你吧!耶鲁大学就是山东一个椰子树长的很多的地方的大学,很牛逼. 很多新手程序员简历都喜 ...

  3. 第十节: EF的三种追踪实体状态变化方式(DBEntityEntry、ChangeTracker、Local)

    一. 简介 我们在前面章节介绍EF基本增删改的时候,曾说过EF的SaveChanges()方法,会一次性的将所有的实体的状态变化统一提交到数据库,那么你是否想过EF的实体会有哪些状态变化呢?什么原因会 ...

  4. Delete from join 用法

    delete (别名) from tblA (别名) left join tblb (别名) on...用法 1.创建使用的表及数据 CREATE TABLE YSHA ( code ), NAME ...

  5. 3D Slicer中文教程(三)—数据加载及保存方式

    1.打开数据与保存数据 (1)打开数据 ——可以将数据拖拽到3D Slicer应用窗口或者从菜单栏工具栏打开. ——多种方式加载大量数据. 有关DICOM数据,请参阅DICOM模块文档. 对于几乎所有 ...

  6. WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种

    WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...

  7. 通过mysqlbinlog 恢复数据

    前提数据库开启了bin_log记录日志. 查看日志 刷新日志 flush logs; 再次查看 show binary logs; 向表中插入一条数据 现在执行delete误操作,删除所有的数据. d ...

  8. 网络流24题——分配问题 luogu 4014

    题目链接:这里 本题是一个典型的费用流问题,可以作为费用流建图模板使用 首先看到,每个人只能做一件工作,每件工作只能做一次,一个人做某件工作有一定的收益 那么我们建立一个超级源点st和超级终点ed,然 ...

  9. appium自动化测试等待的三种方法

    第一种  sleep(): 设置固定休眠时间.python 的 time 包提供了休眠方法 sleep() ,导入 time包后就可以使用 sleep()进行脚本的执行过程进行休眠. python # ...

  10. c++ explicit 构造函数

    代码 #include<iostream> using namespace std; class Example { private: int data; public: Example( ...