本地存储

1.本地存储

1.1本地存储的两个属性

localStorage,sessionStorage

  • 特性
    设置、读取方便
    容量较大,sessionStorage约5M、localStorage约20M
    只能存储字符串,可以将对象JSON.stringify() 编码后存储
  • window.localStorage
    永久生效,除非手动删除(服务器方式访问然后清除缓存)
    可以多窗口(页面)共享
  • window.sessionStorage
    生命周期为关闭浏览器窗口
    在同一个窗口(页面)下数据可以共享
  • 方法
    setItem(key, value) 设置存储内容
    getItem(key) 读取存储内容
    removeItem(key) 删除键值为key的存储内容
    clear() 清空所有存储内容

同源
同源策略,它是由Netscape提出的一个著名的安全策略。
现在所有支持JavaScript浏览器都会使用这个策略。
所谓同源是指,域名,协议,端口相同。
在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时。
同源策略是浏览器的行为,是为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收。

1.2使用length属性和key(index)方法,传入0至length-1之间的数字,可以遍历所有存储数据的名字。

for(var i = 0; i < localStorage.length; i++) { //length表示所有键值对的总数
var name = localStorage.key(i); // 获取第i对的名字
var value = localStorage.getItem(name); // 获取name对应的值
}

1.3 存储事件

无论什么时候存储在localStorage或sessionStorage的数据发生改变,浏览器都会在其他对该数据可见的窗口对象上触发存储事件(但是,在对数据进行改变的窗口对象上是不会触发的)。如果浏览器有两个标签页都打开了来自同源的页面,其中一个页面在localStorage上存储了数据,那么另一个标签页就会接收到一个存储事件。要记住的是sessionStorage的作用域是限制在顶层窗口的,因此对sessionStorage的改变只有当有相牵连的窗口的时候才会触发存储事件。还需要注意的是,只有当存储数据真正发生改变时才会触发存储事件。像给已经存在的存储项设置一个一模一样的值,抑或是删除一个本来就不存在的存储项都是不会触发存储事件的。
为存储事件注册处理程序可以使用addEventListener()方法。在绝大多数浏览器中,还可以使用给window对象设置onstorage属性的方式。
注意点:onstorage当前页面不触发:

  • 当前页面不同窗口触发。
  • 另外的监听页面触发。
    与存储事件相关的事件对象有5个非常重要的属性:
  • key : 修改或删除的key值,如果调用clear()时,该属性值为null
  • newValue: 新设置的值,如果调用removeItem()时,该属性值为null
  • oldValue : 调用改变前的value值;添加新项时,该属性值为null
  • storageArea : 当前的storage对象
  • url : 触发该存储变化脚本所在文档的URL(也就是说哪个页面修改的数据)

补充

iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。

<iframe src="http://www.baidu.com"></iframe>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值