1、浏览器返回(上一页)事件的监听及使用技巧分享
下方代码的基本思路如下:
(1)初始化页面时,使用History对象的history.pushState()
方法往浏览器历史记录中添加一条浏览记录。
(2)监听popstate
事件,并判断地址栏中是否含有哈希标识符(即“#”号)
(3)如果有,判断“#”后面是否为空,如果为空就说明在当前页,因为window.history.pushState('forward', null, '#');
最后一个参数只传递了一个“#”号。
(4)经过(2)(3)的判断,基本可以断定历史记录的位置是当前页,接下来就是在判断内书写功能代码。
(5)我在这一步做的事:清除sessionStorage数据,并技巧性的使用history.back();
解决需要多点击一次才能回退到上一页的问题(注释掉这一句即可看到效果,请自行体验)。
注:点击前进、后退、使用go()、forward()、back()方法都会触发history.popstate
事件
|
|
2、HTML5新技术sessionStorage和localStorage的运用
sessionStorage和localStorage的使用方法是一致的,主要区别是存储的有效期问题。sessionStorage是会话存储,关闭标签页或浏览器数据会自动清除(刷新页面不会清除数据,可以用于解决跨页面数据传递);localStorage是永久存储,除非手动删除或调用了删除数据的方法,否则会永久存储在用户的设备中。
以下是两个函数,实现了sessionStorage的存储和读取,localStorage的用法是一样的,直接把“sessionStorage”替换成“localStorage”即可。值得注意的是,这两种存储方式,只能存放字符串格式的数据,如果是json(或数组等),存储时必须调用JSON.stringify()
进行字符串转换,读取后可以使用JSON.parse()
将字符串转换成json数据。
|
|
2、Web存储的使用样例(摘自网络)
下面以本地存储(localStorage)为例,会话存储改成 sessionStorage 对象即可。
#####(1)文本数据的保存和读取
|
|
#####(2)数值的保存和读取
|
|
(3)日期的保存和读取
|
|
(4)自定义对象的保存和读取
对象的保存和读取可以通过JSON编码转换来实现。
JSON.stringify():把任何对象连同其数据转换为文本形似。
JSON.parse():把文本转换回对象。
|
|
(5)检测某个键的值是否为空,可以直接测试是否等于null
|
|
#####(6)删除数据项
|
|
(7)清除所有数据
|
|
(8)查找所有的数据项
不知道键名,可以使用 key() 方法从本地或者会话存储中取得所有的数据项。下面样例,点击按钮后就会列出所有本地存储中的数据。
|
|
(9)响应存储变化
Web存储也为我们提供了在不同浏览器窗口间通信的机制。也就是说在本地存储或会话存储发生变化时,其他查看同一页面或者同一站点中其他页面的窗口就会触发 window.onStorage 事件。
这里说的存储变化,指的是向存储中添加新数据项,修改既有数据项,删除数据项或者清除所有数据。而对存储不产生任何影响的操作(用既有键名保存相同的值,或者清除原本就是空的存储空间),不会引发 onStorage 事件。
page1核心代码
|
|
page2核心代码
|
|
以上,许久没有更新博客了,说好听是工作繁忙,说难听就是懒!!!书写博客,一来巩固知识,二来方便查阅,有益无害,贵在坚持!