婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > HTML5本地存儲之IndexedDB

HTML5本地存儲之IndexedDB

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

IndexedDB 是一種低級API,用于客戶端存儲大量結構化數(shù)據(jù)(包括, 文件/ blobs)。該API使用索引來實現(xiàn)對該數(shù)據(jù)的高性能搜索。

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

對于只存儲某些字段的需求來說,可以使用Local Storage和 Session Storage來完成。但是一旦存儲大量的數(shù)據(jù),Local Storage和 Session Storage就遠遠不能滿足需求了。這時,IndexedDB的強大之處就會體現(xiàn)出來了。

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

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

因為indexedDB在不同的瀏覽器上有兼容性,所以我們需要些一個兼容函數(shù)來兼容indexedDB。

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

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

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

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

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

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

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

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

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

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

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

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

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

// 添加數(shù)據(jù),當關鍵字存在時數(shù)據(jù)不會添加
store.add(obj);
// 更新數(shù)據(jù),當關鍵字存在時覆蓋數(shù)據(jù),不存在時會添加數(shù)據(jù)
store.put(obj);
// 刪除數(shù)據(jù),刪除指定的關鍵字對應的數(shù)據(jù)
store.delete(value);
// 清除ObjectStore
store.clear();
// 查找數(shù)據(jù),根據(jù)關鍵字查找指定的數(shù)據(jù)
const g = store.get(value);
g.addEventListener('success', function(event){
    // 異步查找后的回調函數(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(); // 迭代,游標下移
    }
}, false);

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

const index = store.index(indexName);
const cursor = index.openCursor(range);
/**
 * range為null時,查找所有數(shù)據(jù)
 * range為指定值時,查找索引滿足該條件的對應的數(shù)據(jù)
 * range為IDBKeyRange對象時,根據(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)

最后,自己封裝了一個indexedDB的庫,可以參考一下:duan602728596/IndexedDB

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

標簽:邯鄲 撫州 內蒙古 安慶 晉中 煙臺 玉溪 牡丹江

巨人網(wǎng)絡通訊聲明:本文標題《HTML5本地存儲之IndexedDB》,本文關鍵詞  HTML5,本地,存儲,之,IndexedDB,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《HTML5本地存儲之IndexedDB》相關的同類信息!
  • 本頁收集關于HTML5本地存儲之IndexedDB的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩国产欧美一区二区三区| 波多野结衣亚洲| 欧美午夜在线观看| 中文字幕不卡一区| 国产揄拍国内精品对白| 5566中文字幕一区二区电影| 亚洲影院免费观看| 精品国产免费一区二区三区四区| 99精品久久免费看蜜臀剧情介绍| 色综合av在线| 亚洲精品网站在线观看| www.欧美日韩国产在线| 国产精品久久久久久久久图文区 | av综合在线播放| 精品播放一区二区| 国产 欧美在线| 国产精品理论片在线观看| 东方aⅴ免费观看久久av| 国产精品麻豆一区二区| 99久久综合99久久综合网站| 国产精品久久久久久久久晋中 | jizzjizzjizz欧美| 国产精品传媒入口麻豆| 在线一区二区三区四区五区| 亚洲第一成年网| 欧美一级久久久久久久大片| 激情深爱一区二区| 国产精品色婷婷| 欧美在线观看视频一区二区三区| 天天影视网天天综合色在线播放| 日韩欧美aaaaaa| 国产精品羞羞答答xxdd| 一区二区三区在线视频观看| 欧美日韩夫妻久久| 国产自产2019最新不卡| 亚洲免费在线播放| 久久蜜桃av一区精品变态类天堂| 99久久99久久精品免费看蜜桃 | 久久无码av三级| 日本二三区不卡| 国产aⅴ综合色| 日韩国产欧美在线视频| 成人免费在线视频| 久久综合色综合88| 欧美一级淫片007| 欧美日本在线看| a在线欧美一区| 国产91精品精华液一区二区三区| 婷婷中文字幕综合| 亚洲最新视频在线播放| 国产性色一区二区| 久久久影院官网| 久久久精品tv| 久久婷婷成人综合色| 日韩视频一区二区三区| 538在线一区二区精品国产| 91丨九色丨蝌蚪富婆spa| 成人av高清在线| 不卡影院免费观看| 91丨九色丨蝌蚪丨老版| 91啦中文在线观看| 99久久国产综合精品麻豆| 99久久er热在这里只有精品15 | 欧美成人在线直播| 日韩欧美一级特黄在线播放| 日韩午夜激情免费电影| 欧美一区二区三区人| 精品福利一区二区三区免费视频| 日韩三级高清在线| 国产亚洲成年网址在线观看| 国产精品久久久久久久久果冻传媒| 国产精品免费视频一区| 亚洲精品国产品国语在线app| 最近中文字幕一区二区三区| 一区二区欧美视频| 天堂在线一区二区| 国产激情一区二区三区四区| 色综合一区二区三区| 欧美肥妇free| 国产精品电影院| 老司机午夜精品99久久| 9人人澡人人爽人人精品| 欧美四级电影在线观看| 精品国产一区久久| 亚洲成人综合网站| 国产白丝精品91爽爽久久| 欧美久久一二区| 国产精品国产成人国产三级| 麻豆国产精品官网| 欧美羞羞免费网站| 国产精品二三区| 国产黄色精品视频| 日韩欧美国产麻豆| 婷婷丁香激情综合| 欧美性猛交一区二区三区精品| 国产日韩欧美高清| 国产一区不卡视频| 日韩精品在线一区二区| 亚洲1区2区3区4区| 在线观看av一区| 一区二区三区不卡视频| 色婷婷国产精品久久包臀| 国产免费久久精品| 国产成人精品一区二区三区网站观看| 在线观看91精品国产麻豆| 亚洲一区二区三区爽爽爽爽爽 | 欧美一区二区视频在线观看2020| 亚洲精品免费在线观看| 色综合久久综合网97色综合| 一区二区三区在线视频播放| 色呦呦一区二区三区| 亚洲成av人影院| 日韩欧美黄色影院| 国产尤物一区二区在线| 亚洲欧美怡红院| av电影天堂一区二区在线 | 日韩女优电影在线观看| 国产一区二区在线视频| 中文字幕一区二区三区不卡在线 | 中文字幕乱码久久午夜不卡| 老司机精品视频导航| 91精品国产乱码久久蜜臀| 奇米亚洲午夜久久精品| 91 com成人网| 久久爱另类一区二区小说| 久久众筹精品私拍模特| 91小视频免费看| 免费看日韩a级影片| 国产欧美视频在线观看| 欧美日韩极品在线观看一区| 免费看欧美女人艹b| 亚洲人xxxx| 久久久www成人免费毛片麻豆 | 国产乱人伦偷精品视频不卡 | 日韩一二三区视频| 欧美午夜精品免费| 久久69国产一区二区蜜臀| 国产精品久久久久久久岛一牛影视| 欧美区视频在线观看| 国产成人av电影在线播放| 日韩高清在线不卡| 亚洲成精国产精品女| 中文字幕中文在线不卡住| www久久久久| 精品国产一区二区亚洲人成毛片| 欧美视频一区二区| 在线视频国内一区二区| 色诱视频网站一区| 99re这里只有精品视频首页| 高清shemale亚洲人妖| 成人性生交大片免费看中文 | 裸体在线国模精品偷拍| 天堂av在线一区| 日韩不卡一二三区| 蜜臀久久99精品久久久画质超高清 | 国产一区二区伦理| 韩国欧美国产一区| 风间由美一区二区av101 | 粉嫩绯色av一区二区在线观看| 国产成人亚洲精品青草天美| 国产精品一区三区| 国产suv精品一区二区三区| 丁香婷婷综合五月| 99精品国产一区二区三区不卡| av中文字幕一区| 欧美久久久久久蜜桃| 欧美电影免费观看完整版| 久久九九全国免费| 亚洲靠逼com| 蜜桃av一区二区| av网站免费线看精品| 欧美日韩国产片| 精品国产第一区二区三区观看体验| 久久久久国产精品厨房| 亚洲色图欧洲色图婷婷| 日本在线播放一区二区三区| 国内一区二区视频| 欧美伊人精品成人久久综合97| 欧美一区在线视频| 专区另类欧美日韩| 日产国产欧美视频一区精品| 99综合影院在线| 精品国产污污免费网站入口| 亚洲精品视频观看| 成人午夜碰碰视频| 欧美一区二区三区四区视频| 国产精品免费人成网站| 偷偷要91色婷婷| 欧美色中文字幕| 依依成人精品视频| 99在线精品免费| 久久久国产一区二区三区四区小说| 亚洲一区二区欧美日韩| 一本一道久久a久久精品| 国产日产欧产精品推荐色| 精彩视频一区二区三区| 欧美精品色一区二区三区| 五月婷婷综合网| 欧美怡红院视频| 午夜伊人狠狠久久|