日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

一篇文章帶你了解JavaScript的Storage接口

來源: 責編: 時間:2024-05-23 17:07:25 161觀看
導讀一、概念Storage 接口用于腳本在瀏覽器保存數據。兩個對象部署了這個接口:window.sessionStorage和window.localStorage。二、屬性和方法1. Storage.setItem()Storage.setItem()方法用于存入數據。它接受兩個參數,第一

一、概念

Storage 接口用于腳本在瀏覽器保存數據。兩個對象部署了這個接口:window.sessionStorage和window.localStorage。9CI28資訊網——每日最新資訊28at.com

9CI28資訊網——每日最新資訊28at.com

二、屬性和方法

1. Storage.setItem()

Storage.setItem()方法用于存入數據。它接受兩個參數,第一個是鍵名,第二個是保存的數據。如果鍵名已經存在,該方法會更新已有的鍵值。該方法沒有返回值。9CI28資訊網——每日最新資訊28at.com

window.sessionStorage.setItem('key', 'value');window.localStorage.setItem('key', 'value');

9CI28資訊網——每日最新資訊28at.com

注:9CI28資訊網——每日最新資訊28at.com

Storage.setItem()兩個參數都是字符串。如果不是字符串,會自動轉成字符串,再存入瀏覽器。9CI28資訊網——每日最新資訊28at.com

window.sessionStorage.setItem(3, { foo: 1 });window.sessionStorage.getItem('3') // "[object Object]"

9CI28資訊網——每日最新資訊28at.com

代碼解析:9CI28資訊網——每日最新資訊28at.com

setItem方法的兩個參數都不是字符串,但是存入的值都是字符串。9CI28資訊網——每日最新資訊28at.com

如果儲存空間已滿,該方法會拋錯,寫入不一定要用這個方法,直接賦值也是可以的。9CI28資訊網——每日最新資訊28at.com

2. Storage.getItem()

Storage.getItem()方法用于讀取數據。它只有一個參數,就是鍵名。如果鍵名不存在,該方法返回null。9CI28資訊網——每日最新資訊28at.com

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

鍵名應該是一個字符串,否則會被自動轉為字符串。9CI28資訊網——每日最新資訊28at.com

3. Storage.key()

Storage.key()接受一個整數作為參數(從零開始),返回該位置對應的鍵值。9CI28資訊網——每日最新資訊28at.com

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

9CI28資訊網——每日最新資訊28at.com

結合使用Storage.length屬性和Storage.key()方法,可以遍歷所有的鍵。9CI28資訊網——每日最新資訊28at.com

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

9CI28資訊網——每日最新資訊28at.com

三、Storage 事件

Storage 接口儲存的數據發生變化時,會觸發 storage 事件,可以指定這個事件的監聽函數。9CI28資訊網——每日最新資訊28at.com

window.addEventListener('storage', onStorageChange);

監聽函數接受一個event實例對象作為參數。這個實例對象繼承了 StorageEvent 接口,有幾個特有的屬性,都是只讀屬性。9CI28資訊網——每日最新資訊28at.com

屬性9CI28資訊網——每日最新資訊28at.com

解析9CI28資訊網——每日最新資訊28at.com

StorageEvent.key9CI28資訊網——每日最新資訊28at.com

字符串,表示發生變動的鍵名。如果 storage 事件是由clear()方法引起,該屬性返回null。9CI28資訊網——每日最新資訊28at.com

StorageEvent.newValue9CI28資訊網——每日最新資訊28at.com

字符串,表示新的鍵值。如果 storage 事件是由clear()方法或刪除該鍵值對引發的,該屬性返回null。9CI28資訊網——每日最新資訊28at.com

StorageEvent.oldValue9CI28資訊網——每日最新資訊28at.com

字符串,表示舊的鍵值。如果該鍵值對是新增的,該屬性返回null。9CI28資訊網——每日最新資訊28at.com

StorageEvent.storageArea9CI28資訊網——每日最新資訊28at.com

對象,返回鍵值對所在的整個對象。也說是說,可以從這個屬性上面拿到當前域名儲存的所有鍵值對。9CI28資訊網——每日最新資訊28at.com

StorageEvent.url9CI28資訊網——每日最新資訊28at.com

字符串,表示原始觸發 storage 事件的那個網頁的網址。9CI28資訊網——每日最新資訊28at.com

如果非要在同一個網頁中監聽怎么辦?

重寫localStorage的方法, 拋出自定義的事件9CI28資訊網——每日最新資訊28at.com

<!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>

9CI28資訊網——每日最新資訊28at.com

注:9CI28資訊網——每日最新資訊28at.com

如果瀏覽器只打開一個窗口,可能觀察不到這個事件。9CI28資訊網——每日最新資訊28at.com

比如同時打開多個窗口,當其中的一個窗口導致儲存的數據發生改變時,只有在其他窗口才能觀察到監聽函數的執行??梢酝ㄟ^這種機制,實現多個窗口之間的通信。9CI28資訊網——每日最新資訊28at.com

四、總結

本文基于JavaScript 基礎。介紹了相關的屬性和方法。通過案例的分析分步進行講解。介紹了Storage 事件在實際的應用,在實際應用中遇到的難點,提過有效的解決方案。9CI28資訊網——每日最新資訊28at.com

歡迎大家積極嘗試,有時候看到別人實現起來很簡單,但是到自己動手實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。9CI28資訊網——每日最新資訊28at.com

代碼很簡單,希望對你學習有幫助。9CI28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-90337-0.html一篇文章帶你了解JavaScript的Storage接口

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 歐洲也要打造自己的“SpaceX”,歐空局選定兩家公司為國際空間站提供商業貨運服務

下一篇: yolov部署到iPhone或終端實踐全過程

標簽:
  • 熱門焦點
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網上出現了。還是博主數碼閑聊站曝光的,這次的外觀設計還是延續了一加11的方案,只是細節上有了調整,例如新加入了鈦空灰
  • 印度登月最關鍵一步!月船三號今晚進入環月軌道

    8月5日消息,據印度官方消息,月船三號將于北京時間今晚21時30分左右開始近月制動進入環月軌道。這是該探測器能夠成功的最關鍵步驟之一,如果成功將開始圍
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 微信語音大揭秘:為什么禁止轉發?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉發?這是一個我們經常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內容創建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業發布的ESG報告。ESG是&ldquo;環境保
  • 8月見!小米MIX Fold 3獲得3C認證:支持67W快充

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • iQOO Neo8系列今日官宣:首發天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯發科新一代旗艦芯片天璣9200+的發布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發搭載這款當前性能最強大的移動平臺
Top 主站蜘蛛池模板: 龙口市| 本溪市| 汨罗市| 尚志市| 华阴市| 满洲里市| 察隅县| 余庆县| 呼伦贝尔市| 沙田区| 大兴区| 珠海市| 瑞丽市| 泰来县| 浦北县| 平谷区| 高碑店市| 桃江县| 萨迦县| 民和| 秀山| 大化| 平武县| 剑川县| 龙山县| 布拖县| 县级市| 湟中县| 武隆县| 博白县| 葫芦岛市| 丰县| 南木林县| 兴宁市| 牙克石市| 麻江县| 东宁县| 玉林市| 轮台县| 鄱阳县| 会理县|