日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

h5 storage事件监听

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 h5 storage事件监听 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分析

引用《h5移動web開發指南》上的話:

“當同源頁面的某個頁面修改了localStorage,其余的同源頁面只要注冊了storage事件,就會觸發”

所以,localStorage的例子運行需要如下條件:

  • 同一瀏覽器打開了兩個同源頁面
  • 其中一個網頁修改了localStorage
  • 另一網頁注冊了storage事件

很容易犯的錯誤是,在同一個網頁修改本地存儲,又在同一個網頁監聽,這樣是沒有效果的。

例子

網頁A:監聽了storage事件:

<!DOCTYPE html> <html> <head lang="en"><title>A</title> </head> <body> <script>window.addEventListener("storage", function (e) {alert(e.newValue);}); </script> </body> </html>

網頁B:修改了localStorage

<!DOCTYPE html> <html> <head lang="en"><title>B</title> </head> <body> <script>localStorage.clear();localStorage.setItem('foo', 'bar'); </script> </body> </html>

運行 : 將上面兩個網頁保存,放到同一個服務器上,然后,先打開A.html,再打開B.html。就會看到A.html會彈出提示框。注意兩個網頁要同源。

擴展

如果非得要在同一網頁監聽怎么辦?可以重寫localStorage的方法,拋出自定義事件:

<!DOCTYPE html> <html> <head lang="en"><title>A</title> </head> <body> <script>var orignalSetItem = localStorage.setItem;localStorage.setItem = function(key,newValue){var setItemEvent = new Event("setItemEvent");setItemEvent.newValue = newValue;window.dispatchEvent(setItemEvent);orignalSetItem.apply(this,arguments);}window.addEventListener("setItemEvent", function (e) {alert(e.newValue);});localStorage.setItem("nm","1234"); </script> </body> </html>

總結

以上是生活随笔為你收集整理的h5 storage事件监听的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。