校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > HTML5本地存儲(chǔ)之IndexedDB

HTML5本地存儲(chǔ)之IndexedDB

熱門標(biāo)簽:聯(lián)通400電話申請(qǐng) 飛亞外呼系統(tǒng) 電視購(gòu)物電銷外呼系統(tǒng) 電話機(jī)器人如何 高德地圖標(biāo)注賓館位置 杭州營(yíng)銷電銷機(jī)器人供應(yīng)商 貸款電銷人工和機(jī)器人哪個(gè)好 百應(yīng)電銷機(jī)器人產(chǎn)業(yè) 西寧智能外呼系統(tǒng)加盟

IndexedDB 是一種低級(jí)API,用于客戶端存儲(chǔ)大量結(jié)構(gòu)化數(shù)據(jù)(包括, 文件/ blobs)。該API使用索引來(lái)實(shí)現(xiàn)對(duì)該數(shù)據(jù)的高性能搜索。

最近有一項(xiàng)業(yè)務(wù)需求,就是可以離線存儲(chǔ)數(shù)據(jù),等到有網(wǎng)絡(luò)信號(hào)的時(shí)候可以上傳表單和圖片。所以研究了一下HTML5的IndexedDB。

對(duì)于只存儲(chǔ)某些字段的需求來(lái)說(shuō),可以使用Local Storage和 Session Storage來(lái)完成。但是一旦存儲(chǔ)大量的數(shù)據(jù),Local Storage和 Session Storage就遠(yuǎn)遠(yuǎn)不能滿足需求了。這時(shí),IndexedDB的強(qiáng)大之處就會(huì)體現(xiàn)出來(lái)了。

1、創(chuàng)建或者打開數(shù)據(jù)庫(kù)

/* 對(duì)不同瀏覽器的indexedDB進(jìn)行兼容 */
const indexeddb = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
/* 創(chuàng)建或連接數(shù)據(jù)庫(kù) */
const request = indexeddb.open(name, version);  // name:數(shù)據(jù)庫(kù)名,version:數(shù)據(jù)庫(kù)版本號(hào)

因?yàn)閕ndexedDB在不同的瀏覽器上有兼容性,所以我們需要些一個(gè)兼容函數(shù)來(lái)兼容indexedDB。

2、連接到數(shù)據(jù)庫(kù)的回調(diào)函數(shù)

request.addEventListener('success', function(event){ 
    // 打開或創(chuàng)建數(shù)據(jù)庫(kù)成功
}, false);
request.addEventListener('error', function(event){ 
    // 打開或創(chuàng)建數(shù)據(jù)庫(kù)失敗
}, false);
request.addEventListener('upgradeneeded', function(event){ 
    // 更新數(shù)據(jù)庫(kù)時(shí)執(zhí)行
}, false);

在連接到數(shù)據(jù)庫(kù)后,request會(huì)監(jiān)聽三種狀態(tài):

  • success:打開或創(chuàng)建數(shù)據(jù)庫(kù)成功
  • error:打開或創(chuàng)建數(shù)據(jù)庫(kù)失敗
  • upgradeneeded:更新數(shù)據(jù)庫(kù)

upgradeneeded狀態(tài)是在indexedDB創(chuàng)建新的數(shù)據(jù)庫(kù)時(shí)和indexeddb.open(name, version) version(數(shù)據(jù)庫(kù)版本號(hào))發(fā)生變化時(shí)才能監(jiān)聽到此狀態(tài)。當(dāng)版本號(hào)不發(fā)生變化時(shí),不會(huì)觸發(fā)此狀態(tài)。數(shù)據(jù)庫(kù)的ObjectStore的創(chuàng)建、刪除等都是在這個(gè)監(jiān)聽事件下執(zhí)行的。

3、創(chuàng)建、刪除ObjectStore

在indexedDB中,ObjectStore類似于數(shù)據(jù)庫(kù)的表。

request.addEventListener('upgradeneeded', function(event){ 
    // 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例
    const db = event.target.result;
    // 關(guān)閉數(shù)據(jù)庫(kù)
    db.close();
    // 判斷是否有ObjectStore
    db.objectStoreNames.contains(objectStoreName);
    // 刪除ObjectStore
    db.deleteObjectStore(objectStoreName);
}, false);

可以用如下方法創(chuàng)建一個(gè)ObjectStore

request.addEventListener('upgradeneeded', function(event){ 
    // 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例
    const db = event.target.result;
    // 判斷是否有ObjectStore
    if(!db.objectStoreNames.contains(objectStoreName)){
        const store = db.createObjectStore(objectStoreName, {
            keyPath: keyPath  // keyPath 作為ObjectStore的搜索關(guān)鍵字
        });
        // 為ObjectStore創(chuàng)造索引
        store.createIndex(name,    // 索引
                          index,   // 鍵值
                          {
                              unique: unique  // 索引是否唯一
                          });
    }
}, false);

4、數(shù)據(jù)的增刪改查

request.addEventListener('success', function(event){ 
    // 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例
    const db = event.target.result;
    // 查找一個(gè)ObjectStore
    db.transaction(objectStoreName, wa);
    // wa為'readwrite'時(shí),數(shù)據(jù)可以讀寫 
    // wa為'readonly'時(shí),數(shù)據(jù)只讀
    const store = transaction.objectStore(objectStoreName);
}, false);

數(shù)據(jù)庫(kù)的增刪改查:

// 添加數(shù)據(jù),當(dāng)關(guān)鍵字存在時(shí)數(shù)據(jù)不會(huì)添加
store.add(obj);
// 更新數(shù)據(jù),當(dāng)關(guān)鍵字存在時(shí)覆蓋數(shù)據(jù),不存在時(shí)會(huì)添加數(shù)據(jù)
store.put(obj);
// 刪除數(shù)據(jù),刪除指定的關(guān)鍵字對(duì)應(yīng)的數(shù)據(jù)
store.delete(value);
// 清除ObjectStore
store.clear();
// 查找數(shù)據(jù),根據(jù)關(guān)鍵字查找指定的數(shù)據(jù)
const g = store.get(value);
g.addEventListener('success', function(event){
    // 異步查找后的回調(diào)函數(shù)
}, false);

按索引查找數(shù)據(jù)

const index = store.index(indexName);
const cursor = index.openCursor(range);
cursor.addEventListener('success', function(event){
    const result = event.target.result;
    if(result){
        result.value       // 數(shù)據(jù)
        result.continue(); // 迭代,游標(biāo)下移
    }
}, false);

按索引的范圍查找數(shù)據(jù)

const index = store.index(indexName);
const cursor = index.openCursor(range);
/**
 * range為null時(shí),查找所有數(shù)據(jù)
 * range為指定值時(shí),查找索引滿足該條件的對(duì)應(yīng)的數(shù)據(jù)
 * range為IDBKeyRange對(duì)象時(shí),根據(jù)條件查找滿足條件的指定范圍的數(shù)據(jù)
 */
// 大于或大于等于 
range = IDBKeyRange.lowerBound(value, true)   // (value, +∞),>  value
range = IDBKeyRange.lowerBound(value, false)  // [value, +∞),>= value
// 小于或小于等于,isOpen:true,開區(qū)間;false,閉區(qū)間
range = IDBKeyRange.upperBound(value, isOpen)
// 大于或大于等于value1,小于或小于等于value2
IDBKeyRange.bound(value1, value2, isOpen1, isOpen2)

最后,自己封裝了一個(gè)indexedDB的庫(kù),可以參考一下:duan602728596/IndexedDB

以上所述是小編給大家介紹的HTML5本地存儲(chǔ)之IndexedDB,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

標(biāo)簽:邯鄲 撫州 內(nèi)蒙古 安慶 晉中 煙臺(tái) 玉溪 牡丹江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《HTML5本地存儲(chǔ)之IndexedDB》,本文關(guān)鍵詞  HTML5,本地,存儲(chǔ),之,IndexedDB,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《HTML5本地存儲(chǔ)之IndexedDB》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于HTML5本地存儲(chǔ)之IndexedDB的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产欧美日韩另类一区| 日本在线不卡一区| 欧美经典三级视频一区二区三区| 精品国产一二三区| 精品国产91亚洲一区二区三区婷婷| 欧美日本在线一区| 欧美日韩在线播放一区| 欧美视频日韩视频在线观看| 欧美日韩一区国产| 日韩欧美二区三区| 欧美午夜精品理论片a级按摩| 亚洲美女视频在线观看| 亚洲人成7777| 一区二区视频在线| 亚洲欧美激情小说另类| 一区二区三区自拍| 一卡二卡三卡日韩欧美| 性做久久久久久久免费看| 婷婷久久综合九色综合伊人色| 婷婷久久综合九色综合绿巨人| 天堂va蜜桃一区二区三区| 日本不卡一区二区三区| 欧美成人精品1314www| 91麻豆高清视频| 91欧美一区二区| 精品视频免费看| 日韩欧美一区二区视频| 国产欧美日韩不卡免费| 玉足女爽爽91| 久久99精品久久久久久久久久久久| 九九在线精品视频| jvid福利写真一区二区三区| 91黄色激情网站| 在线观看91av| 久久综合色一综合色88| 国产精品久久福利| 午夜精品久久久久久| 狠狠色伊人亚洲综合成人| 成人在线视频一区二区| 欧美三级中文字| www久久久久| 亚洲综合免费观看高清完整版| 日本美女视频一区二区| 高清视频一区二区| 欧美日韩精品高清| 国产三级欧美三级日产三级99| 亚洲欧美电影一区二区| 美女被吸乳得到大胸91| 97精品超碰一区二区三区| 91麻豆精品国产91久久久久| 国产色91在线| 日韩精品亚洲专区| 白白色 亚洲乱淫| 欧美一区二区黄色| 中文字幕日韩一区| 久久福利资源站| 91丨porny丨最新| 91精品国产综合久久香蕉麻豆| 国产三级三级三级精品8ⅰ区| 夜夜揉揉日日人人青青一国产精品| 精品亚洲国产成人av制服丝袜 | 久久国产综合精品| 99视频在线精品| 欧美大胆一级视频| 亚洲一区av在线| 成人黄色片在线观看| 日韩欧美一级特黄在线播放| 亚洲天堂a在线| 国产美女一区二区三区| 欧美巨大另类极品videosbest | 欧美精品粉嫩高潮一区二区| 91色九色蝌蚪| 欧美在线视频你懂得| 国产欧美日韩视频在线观看| 午夜精品久久久久| 91麻豆免费看| 欧美韩国日本综合| 精品一区二区三区在线视频| 欧美在线高清视频| 国产精品久99| 国产成人精品一区二区三区网站观看| 欧美日韩一区二区三区高清 | 亚洲成a天堂v人片| 99久久精品国产毛片| 337p粉嫩大胆噜噜噜噜噜91av| 午夜欧美在线一二页| 在线观看一区二区视频| 亚洲日本在线视频观看| 成人三级在线视频| 久久精品在这里| 国产九色sp调教91| 久久综合九色综合久久久精品综合 | 91美女片黄在线观看91美女| 国产视频一区二区在线| 激情综合网天天干| 欧美大片在线观看一区| 蜜臀久久99精品久久久久宅男| 欧美美女视频在线观看| 亚洲主播在线播放| 欧美视频在线一区二区三区| 一区二区三区中文字幕| 99精品国产一区二区三区不卡| 国产精品美女久久福利网站| 成人午夜伦理影院| 中文字幕一区二区三区视频| 国产一区二区三区黄视频| 久久婷婷久久一区二区三区| 国产真实乱对白精彩久久| 久久精品一级爱片| 床上的激情91.| 综合久久国产九一剧情麻豆| 99精品偷自拍| 亚洲老妇xxxxxx| 欧美日韩小视频| 日本成人在线网站| 久久精品日产第一区二区三区高清版| 欧美视频一区二| 日日骚欧美日韩| 日韩欧美国产综合| 国内精品伊人久久久久av影院| 久久久美女毛片| 成人免费视频网站在线观看| 国产精品久久一卡二卡| 色呦呦国产精品| 日日欢夜夜爽一区| 欧美精品一区二区久久婷婷| 国产成人自拍网| 亚洲欧美中日韩| 欧美日韩三级一区| 六月丁香综合在线视频| 欧美激情一二三区| 在线观看网站黄不卡| 午夜欧美2019年伦理| 久久午夜色播影院免费高清| 99久久久精品| 日韩av一区二区三区四区| 久久综合色婷婷| 一本色道久久综合亚洲91| 午夜不卡av在线| 久久久久高清精品| 色视频欧美一区二区三区| 人人狠狠综合久久亚洲| 国产精品国产自产拍高清av| 欧美日韩精品一区二区三区 | 黄页网站大全一区二区| 国产精品电影院| 欧美一区2区视频在线观看| 国产二区国产一区在线观看| 亚洲乱码日产精品bd| 日韩女优毛片在线| 91免费看视频| 美女任你摸久久 | 韩国三级电影一区二区| 一区在线观看视频| 日韩精品一区二区三区老鸭窝 | 欧美日韩综合色| 粉嫩高潮美女一区二区三区| 亚洲国产乱码最新视频 | 亚洲午夜日本在线观看| voyeur盗摄精品| 国产精品卡一卡二| 日韩视频不卡中文| 97超碰欧美中文字幕| 激情都市一区二区| 天天av天天翘天天综合网| 中文字幕一区二区5566日韩| 日韩无一区二区| 91高清视频在线| 国产99久久久国产精品潘金| 日韩1区2区日韩1区2区| 一区二区三区日韩精品| 国产欧美精品区一区二区三区| 日韩一级片在线观看| 欧美午夜片在线观看| 97久久超碰精品国产| 国产麻豆一精品一av一免费| 日本人妖一区二区| 亚洲在线成人精品| 亚洲日本在线视频观看| 国产午夜精品理论片a级大结局| 91 com成人网| 欧美日韩三级视频| 91极品美女在线| www.亚洲免费av| 成人在线视频一区二区| 国产精品夜夜嗨| 精品一区二区三区免费播放| 丝袜美腿成人在线| 亚洲国产视频在线| 亚洲尤物视频在线| 一区二区三区日韩精品| 亚洲视频在线一区观看| 欧美国产激情一区二区三区蜜月| 欧美精品一区二区久久婷婷 | 亚洲天堂网中文字| 国产精品麻豆99久久久久久| 久久一区二区视频| 精品美女被调教视频大全网站| 91精品综合久久久久久| 欧美日韩精品一区二区天天拍小说|