中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

對HTML5中LocalStorage的一些使用建議

發布時間:2020-06-29 05:12:24 來源:網絡 閱讀:872 作者:jyb2014 欄目:移動開發

上個月末的w3ctech上,有同行提到了LocalStorage這個話題,我覺得在HTML5的眾多新特性中,LocalStorage算是比較實際同時瀏覽器也比較好實現的特性。


LocalStorage的規范描述在這里:http://dev.w3.org/html5/webstorage/


首先一個細節,LocalStorage只能存儲鍵值對(key-value pair)形式的數據,并且key和value都只能存儲為字符串類型。之所以這樣說,因為JS是動態語言,我們可以在setItem時傳入int型數據(比如localStorage.setItem("a", 1)),但是它會轉換成字符串之后再進行存儲和準備隨時調用,當我們用getItem訪問"a"時(localStorage.getItem("a")),得到的是字符串"1"而非數字1。


第二,雖然localStorage[key] = value的寫法主流的瀏覽器都是支持的,但標準里并沒有明確的要求,所以不推薦這樣書寫代碼。而且很顯而易見的問題是:對length、setItem、getItem、clear這樣的key進行讀寫是會產生問題的。假如我們執行:


localStorage.setItem = null;

localStoarge.removeItem = null;

localStorage.clear = null;

那么整個LocalStorage的接口完備性將會遭到破壞。


當然,對JS比較熟悉的童鞋可以思考一個附加的變態問題,執行了上述代碼之后,localStorage還有沒有辦法恢復正常呢?


第三,如果我們不想存儲字符串,而是類型更豐富結構更復雜的數據,我們推薦大家和JSON的相關函數JSON.parse/JSON.stringify配合使用。這樣我們可以方便復雜數據結構和字符串之間的轉換,獲取數據的時候使用JSON.parse(localStorage.getItem("a")),寫入數據的時候使用localStorage.setItem("a", JSON.stringify(obj))。


第四,LocalStorage跟cookies一樣是按照域名為單位進行獨立存儲的,且是有容量上限的(一般為5MB),當我們調用setItem時如果超過容量上限,會觸發QuotaExceededError異常。我的經驗是,如果你是存文本的,一般碰不到這根線,可以無視;如果用DataURI方式存二進制文件,就需要特別注意了,視頻的話,基本沒有5MB以下的,所以不會考慮LocalStorage的,也不用特別注意;但如果是圖片,很容易幾百K的圖片多存幾張就夠5MB了,所以有必要提個醒。當然有些瀏覽器也會通過提醒用戶確認來允許網站使用更多的容量,那個是另一說了。


上述四個建議是我個人使用LocalStorage最常碰到的狀況,這里分享給大家。


最后在附送一個“高階”技巧:window.onstorage事件。其實這也不算多高級,只是用的地方比較少罷了。假如我們同時打開了同域下的多個頁面,這時我在一個頁面里操作localStorage.setItem、localStorage.removeItem或localStorage.clear,其它同域的頁面就會觸發這個事件。事件附帶的參數是這樣的:

window.onstorage = function (event) {

    var key = event.key // 被修改的鍵名

    var oldValue = event.oldValue // 舊的值

    var newValue = event.newValue // 新的值

    var url = event.url // 觸發改變的網頁的url

    var storage = event.storageArea // 當前localStorage的引用(當sessionStorage改變時,這里就是當前sessionStorage的引用,好吧扯遠了,看不懂可以先無視)

}


這個特性可以幫助我們在多個頁面間實現簡單的通信、同步和數據交互,比如在一個網站的用戶設置頁面中修改用戶昵稱,那么你的所有頁面中的昵稱也都瞬間改變了。當然,與之產生的注意事項是要回避循環修改,以免瀏覽器進入死循環。


以上


其實對于LocalStorage還有很多細節,對HTML5感興趣的童鞋可以進一步挖掘。來年的交流會上,我們一定還會聊到LocalStorage。到那時,我們可以再做更深入的討論和交流。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

楚雄市| 阳谷县| 内江市| 日喀则市| 柳江县| 罗田县| 华安县| 襄垣县| 独山县| 肇源县| 余庆县| 平陆县| 商河县| 措勤县| 汾阳市| 澎湖县| 敦化市| 靖安县| 冀州市| 深圳市| 邢台县| 水富县| 合江县| 漯河市| 青川县| 湘潭市| 绥滨县| 遂昌县| 天气| 台东市| 黄梅县| 达拉特旗| 志丹县| 镇平县| 迁西县| 龙川县| 芮城县| 色达县| 北宁市| 太康县| 平顶山市|