好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 解析HTML5的存儲功能和web SQL的相關(guān)操作方法

解析HTML5的存儲功能和web SQL的相關(guān)操作方法

熱門標簽:南通數(shù)據(jù)外呼系統(tǒng)推廣 外呼線穩(wěn)定線路 pageadm實現(xiàn)地圖標注 外呼系統(tǒng)電話怎么投訴 邢臺縣地圖標注app 地圖標注位置能賺錢嗎 申請400電話流程簡介 阜陽企業(yè)外呼系統(tǒng) 呼和浩特外呼電銷系統(tǒng)排名

HTML5 引入了兩種機制,類似于 HTTP 的會話 cookies,用于在客戶端存儲結(jié)構(gòu)化數(shù)據(jù)以及克服以下缺點。

每個 HTTP 請求中都包含 Cookies,從而導(dǎo)致傳輸相同的數(shù)據(jù)減緩我們的 Web 應(yīng)用程序。

每個 HTTP 請求中都包含 Cookies,從而導(dǎo)致發(fā)送未加密的數(shù)據(jù)到互聯(lián)網(wǎng)上。

Cookies 只能存儲有限的 4KB 數(shù)據(jù),不足以存儲所需的數(shù)據(jù)。
這兩種存儲方式是 session storage 和 local storage,它們將用于處理不同的情況。

幾乎所有最新版的瀏覽器都支持 HTML5 存儲,包括 IE 瀏覽器。

會話存儲
_會話存儲_被設(shè)計用于用戶執(zhí)行單一事務(wù)的場景,但是同時可以在不同的窗口中執(zhí)行多個事務(wù)。

示例

比如,如果用戶在同一網(wǎng)站的兩個不同的窗口中購買機票。如果該網(wǎng)站使用 cookie 跟蹤用戶購買的機票,當用戶在窗口中點擊頁面時,從一個窗口到另一個時當前已經(jīng)購買的機票會“泄漏”,這可能導(dǎo)致用戶購買同一航班的兩張機票而沒有注意到。

HTML5 引入了 sessionStorage 屬性,這個網(wǎng)站可以用來把數(shù)據(jù)添加到會話存儲中,用戶仍然可以在打開的持有該會話的窗口中訪問同一站點的任意頁面,當關(guān)閉窗口時,會話也會丟失。

下面的代碼將會設(shè)置一個會話變量,然后訪問該變量:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <body>  
  4.   
  5.   <script type="text/javascript">  
  6.     if( sessionStorage.hits ){   
  7.        sessionStorage.hits = Number(sessionStorage.hits) +1;   
  8.     }else{   
  9.        sessionStorage.hits = 1;   
  10.     }   
  11.     document.write("Total Hits :" + sessionStorage.hits );   
  12.   </script>  
  13.   <p>Refresh the page to increase number of hits.</p>  
  14.   <p>Close the window and open it again and check the result.</p>  
  15.   
  16. </body>  
  17. </html>  

本地存儲
_本地存儲_被設(shè)計用于跨多個窗口進行存儲,并持續(xù)處在當前會話上。尤其是,出于性能的原因 Web 應(yīng)用程序可能希望在客戶端存儲百萬字節(jié)的用戶數(shù)據(jù),比如用戶撰寫的整個文檔或者是用戶的郵箱。

Cookies 并不能很好的處理這種情況,因為每個請求都會傳輸。

示例

HTML5 引入了 localStorage 屬性,可以用于訪問頁面的本地存儲區(qū)域而沒有時間限制,無論何時我們使用這個頁面的時候本地存儲都是可用的。

下面的代碼設(shè)置了一個本地存儲變量,每次訪問這個頁面時都可以訪問該變量,甚至是下次打開窗口時:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <body>  
  4.   
  5.   <script type="text/javascript">  
  6.     if( localStorage.hits ){   
  7.        localStorage.hits = Number(localStorage.hits) +1;   
  8.     }else{   
  9.        localStorage.hits = 1;   
  10.     }   
  11.     document.write("Total Hits :" + localStorage.hits );   
  12.   </script>  
  13.   <p>Refresh the page to increase number of hits.</p>  
  14.   <p>Close the window and open it again and check the result.</p>  
  15.   
  16. </body>  
  17. </html>  

便于學習上述概念 - 請進行在線練習。

刪除 Web 存儲
在本地機器上存儲敏感數(shù)據(jù)可能是危險的,可能會留下安全隱患。

_會話存儲數(shù)據(jù)_在會話終止之后將由瀏覽器立即刪除。

要清除本地存儲設(shè)置需要調(diào)用 localStorage.remove('key');這個 'key' 就是我們想要移除的值對應(yīng)的鍵。如果想要清除所有設(shè)置,需要調(diào)用 localStorage.clear() 方法。

下面的代碼會完全清除本地存儲:

XML/HTML Code復(fù)制內(nèi)容到剪貼板
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <body>  
  4.   
  5.   <script type="text/javascript">  
  6.     localStorage.clear();   
  7.   
  8.     // Reset number of hits.   
  9.     if( localStorage.hits ){   
  10.        localStorage.hits = Number(localStorage.hits) +1;   
  11.     }else{   
  12.        localStorage.hits = 1;   
  13.     }   
  14.     document.write("Total Hits :" + localStorage.hits );   
  15.   </script>  
  16.   <p>Refreshing the page would not to increase hit counter.</p>  
  17.   <p>Close the window and open it again and check the result.</p>  
  18.   
  19. </body>  
  20. </html>  

Web SQL 數(shù)據(jù)庫
Web SQL 數(shù)據(jù)庫 API 并不是 HTML5 規(guī)范的一部分,但是它是一個獨立的規(guī)范,引入了一組使用 SQL 操作客戶端數(shù)據(jù)庫的 APIs。
核心方法
下面是規(guī)范中定義的三個核心方法。也會涵蓋在本教程中:

openDatabase:這個方法使用現(xiàn)有的數(shù)據(jù)庫或者新建的數(shù)據(jù)庫創(chuàng)建一個數(shù)據(jù)庫對象。
transaction:這個方法讓我們能夠控制一個事務(wù),以及基于這種情況執(zhí)行提交或者回滾。
executeSql:這個方法用于執(zhí)行實際的 SQL 查詢。
開啟數(shù)據(jù)庫
如果數(shù)據(jù)庫已經(jīng)存在,openDatabase 方法負責開啟數(shù)據(jù)庫,如果不存在,這個方法會創(chuàng)建它。

使用下面的代碼可以創(chuàng)建并開啟一個數(shù)據(jù)庫:

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. var db = openDatabase('mydb''1.0''Test DB', 2 * 1024 * 1024);  

上面的方法接受下列五個參數(shù):

數(shù)據(jù)庫名稱
版本號
描述文本
數(shù)據(jù)庫大小
創(chuàng)建回調(diào)
最后也是第五個參數(shù),創(chuàng)建回調(diào)會在創(chuàng)建數(shù)據(jù)庫后被調(diào)用。然而,即使沒有這個特性(功能),運行時仍然會創(chuàng)建數(shù)據(jù)庫以及正確的版本。

執(zhí)行查詢
執(zhí)行查詢需要使用 database.transaction() 函數(shù)。這個函數(shù)需要一個參數(shù),它是一個負責實際執(zhí)行查詢的函數(shù),如下所示:

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. var db = openDatabase('mydb''1.0''Test DB', 2 * 1024 * 1024);   
  2. db.transaction(function (tx) {     
  3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');   
  4. });  

上面的查詢語句會在 'mydb' 數(shù)據(jù)庫中創(chuàng)建一個叫做的 LOGS 的表。

插入操作
為了在表中創(chuàng)建條目,我們在上面的例子中加入簡單的 SQL 查詢,如下所示:

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. var db = openDatabase('mydb''1.0''Test DB', 2 * 1024 * 1024);   
  2. db.transaction(function (tx) {   
  3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');   
  4.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');   
  5.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');   
  6. });  

創(chuàng)建條目時還可以傳遞如下所示的動態(tài)值:

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. var db = openDatabase('mydb''1.0''Test DB', 2 * 1024 * 1024);   
  2. db.transaction(function (tx) {     
  3.   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');   
  4.   tx.executeSql('INSERT INTO LOGS   
  5.                         (id,log) VALUES (?, ?'), [e_id, e_log];   
  6. });  

這里的 e_id 和 e_log 是外部變量,executeSql 會映射數(shù)組參數(shù)中的每個條目給 "?"。

讀取操作
要讀取已經(jīng)存在的記錄,我們可以使用回調(diào)來捕獲結(jié)果,如下所示:

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. var db = openDatabase('mydb''1.0''Test DB', 2 * 1024 * 1024);   
  2. db.transaction(function (tx) {   
  3.    tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');   
  4.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');   
  5.    tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');   
  6. });   
  7. db.transaction(function (tx) {   
  8.    tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {   
  9.    var len = results.rows.length, i;   
  10.    msg = "<p>Found rows: " + len + "</p>";   
  11.    document.querySelector('#status').innerHTML +=  msg;   
  12.    for (i = 0; i < len; i++){   
  13.       alert(results.rows.item(i).log );   
  14.    }   
  15.  }, null);   
  16. });  

最終示例
最后,然我們把這個例子放到如下所示的完整 HTML5 文檔中,然后嘗試在 Safari 瀏覽器中運行它:

JavaScript Code復(fù)制內(nèi)容到剪貼板
  1. <!DOCTYPE HTML>   
  2. <html>   
  3. <head>   
  4. <script type="text/javascript">   
  5. var db = openDatabase('mydb''1.0''Test DB', 2 * 1024 * 1024);   
  6. var msg;   
  7. db.transaction(function (tx) {   
  8.   tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)');   
  9.   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")');   
  10.   tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');   
  11.   msg = '<p>Log message created and row inserted.</p>';   
  12.   document.querySelector('#status').innerHTML =  msg;   
  13. });   
  14.   
  15. db.transaction(function (tx) {   
  16.   tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {   
  17.    var len = results.rows.length, i;   
  18.    msg = "<p>Found rows: " + len + "</p>";   
  19.    document.querySelector('#status').innerHTML +=  msg;   
  20.    for (i = 0; i < len; i++){   
  21.      msg = "<p><b>" + results.rows.item(i).log + "</b></p>";   
  22.      document.querySelector('#status').innerHTML +=  msg;   
  23.    }   
  24.  }, null);   
  25. });   
  26. </script>   
  27. </head>   
  28. <body>   
  29. <div id="status" name="status">Status Message</div>   
  30. </body>   
  31. </html>  

在瀏覽器中這會生成如下所示結(jié)果:

復(fù)制代碼
代碼如下:

Log message created and row inserted.</p> <p>Found rows: 2</p> <p>foobar</p> <p>logmsg

標簽:內(nèi)蒙古 辛集 蚌埠 黃山 楊凌 撫順 德州 鶴崗

巨人網(wǎng)絡(luò)通訊聲明:本文標題《解析HTML5的存儲功能和web SQL的相關(guān)操作方法》,本文關(guān)鍵詞  解析,HTML5,的,存儲,功能和,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解析HTML5的存儲功能和web SQL的相關(guān)操作方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于解析HTML5的存儲功能和web SQL的相關(guān)操作方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 女人?精XXXXX凹凸视频| 欧亚专线欧洲s码wmy| 放荡小婬妇H肉辣文糙汉军婚视频 高辣h文乱乳H文浪荡小说苏媚 | 免费约妹APP| 国产精品人獸交一区二区三区下| 成全我在线观看免费观看| freefullhdxxx| 日本三级床戏视频| free×性护士vidos中国| 色图自拍偷拍| 国产美女久久久久久久久久久| 全是裸男的电影禁片| 做床爱无遮挡免费视频在线观看| 杨依销魂人体极品150p| 老师掀开裙子让我爽了一夜| 欧洲最大但人文艺术666| 日韩欧免费一区二区三区| 天堂俺去俺来也www久久婷婷| 西门庆潘金莲三级BD高清| 不许穿内裤随时挨c调教h| 调教师鞭打总裁奴男男| 91啦在线播放| 含苞欲肉(禁忌1v1高H)| 翁熄浪公春意浓小说| 麻豆啪啪| 欧美国产精品一区二区不卡| 亚洲V欧美V国产V在线观看| 国产一级爱| 诱人的上司hd在线观看| 嗯啊勾引| 欧美激情 第 9 页| 薛洋哭着喊着让晓星尘退出去 | 国产精品综合一区二区| 女版三国爆衣手游破解版| 男女全黄做爰视频免费下载| 你的欲梦裸身在线播放| 免费电影在线看| 亚洲国产精品不卡毛片a在线| 最近高清中文字幕完整版| 精品国偷自产在线不卡短视频| 太深太粗太大太猛太爽了视频|