实践 Storage 事件

0
视频
0
完成
0%
进度
0
分钟
0
完成
0%
进度

这个视频我们可以来看一下使用这个 storage 事件 ..

准备

先打开这个 index.html 你可以在这个课程的资源包里找到这个文档 … 在这个网页里,我事先添加了两个按钮 .. 设置数据项目 … 在上面定义了一个 set-storage ID … 一会儿我们要用到这个 ID 去监听这个按钮的点击事件 ..

另外还有一个 清除数据项目 这个按钮 … 上面的 ID 是 clear-storage ..

再打开 script.js …

先定义了一个函数 … 它做的事儿就是去设置 localStorage …

// 设置数据
function setStorage() {
localStorage.setItem('name', '王皓');
}

再定义一个函数 … 让它可以去清空设置的 localStorage …

// 清空数据
function clearStorage() {
localStorage.clear();
}

下面我们去监听 index.html 的那两个按钮 … 点击 设置数据项目 按钮的时候,去执行 setStorage() … 点击 清除数据项目 按钮的时候 .. 执行 clearStorage() …

// 监听 设置数据项目 按钮
var setStorageBtn = document.getElementById("set-storage");
setStorageBtn.addEventListener("click", setStorage, false);

// 监听 清除数据项目 按钮
var clearStorageBtn = document.getElementById("clear-storage");
clearStorageBtn.addEventListener("click", clearStorage, false);

storage 事件

然后我们可以去监听 storage 事件 … 点击 设置数据项目 或者 清除数据项目 按钮的时候,可能会导致存储区域发生改变 … 这样就会触发 storage 事件 …

// 监听存储区域变化事件
window.addEventListener("storage", storageEventHandle, false);

当 storage 事件发生的时候,让它去执行 storageEventHandle 这个函数 … 在它的上面 … 我们可以再去定义这个函数 …

function storageEventHandle() {} .. storage 发生的时候,会收到一个有用的信息 .. 比如,被改变的数据值的名称 … 这个数据之前的值是什么 … 还有改变以后的值是什么 .. 这个更改来自哪个地址等等 …

这些东西会放在一个对象里面 .. 我们可以把这个对象交给处理 storage 事件的这个函数 … 这里我们可以叫它 event … 这样在函数里面 … 用 event 点 的形式 .. 比如 event.key 可以输出发生改变的数据值的名称 … event.oldValue 可以输出改变以前的值 …

event.newValue … 可以输出改变之后的值 …

// 处理 storage 事件
function storageEventHandle(event) {
console.log(
"数据名称: " + event.key + "\n" +
"以前的值: " + event.oldValue + "\n" +
"新的值: " + event.newValue + "\n" +
"链接: " + event.url + "\n" +
"存储: " + event.storageArea
);
}

在这个函数里 … 用一个 console.log … 把这些信息输出到控制台上 ..

测试

下面我们可以去测试一下 ….

想要测试 storage 事件 … 我们需要把网页放在一个 web 服务器上 … 你可以在本地搭建一个 web 服务器的环境 … windows 用户可以使用 WAMP .. Mac 用户可以使用 MAMP …

把网页放在服务器的发布目录里面 … 这样我们可以直接在浏览器上,使用 localhost … 访问到这个网页 …

http://localhost/Storage-Course/index.html

因为 storage 会在其它的窗口或者标签里面触发 .. 所以,我们可以新建一个标签 … 打开同样的文档 .. 也可以是不同的文档 … 只要他们在同一个存储范围内就行… (左,右窗口)

这样如果在左边这个窗口里面改变存储数据 … 右边这个窗口会接收到 storage 事件 .. 然后执行 storageEventHandle 函数 .. 在控制台上显示一些内容 ….

打开这两个标签的控制台 …

现在我们还没有设置 storage .. 所以 … 点击 清除数据项目 这个按钮 … 不会有什么反应 … 因为还没有可以清除掉的数据 ..

点击 设置数据项目 … 会设置一条 localStorage 数据 …

这个数据是在左边窗口更改的 .. 所以 … 右边这个窗口会接收到 storage 事件 … 也就会在控制台上输出一些我们事先设计好的内容 …

你会看到 … 发生改变的数据值的名称是 name … 这个数据以前没有值 … 所以,以前的值这里,会显示 null …

新设置的值是 王皓 … 链接是 ….

下面可以点击右边的这个窗口的 设置数据项目 …

左边窗口没有反应 … 因为我们设置的数据是一样的 … 所以不会触发 storage 事件 ..

再点一下 清除数据项目 …

在左边窗口的控制台上 … 会显示一些内容 ..

使用这个 storage 事件 .. 我们可以让不同窗口或者标签之间相互沟通 ..

另外,要注意是 … sessionStorage … 只有在同一个窗口里的框架发生变化的时候 … 才会触发这个 storage 事件 …

实践 Storage 事件《 HTML5:Web 存储 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点