HTML5-Web存儲(chǔ)

早期web中使用cookies在客戶端保存注入用戶名等簡單的信息,但是,使用cookies存儲(chǔ)永久數(shù)據(jù)存在以下問題.

  • cookies的大小限制在4kb,不適合大量的數(shù)據(jù)存儲(chǔ)
  • 瀏覽器還限制站點(diǎn)可以在用戶計(jì)算機(jī)上存儲(chǔ)的cookies的數(shù)量
  • cookies是隨HTTP失誤一起被發(fā)送的,因此會(huì)浪費(fèi)一部分帶寬.

LocalStorage && SessionStorage

HTML5提供了本地存儲(chǔ)的功能,以鍵值對的存儲(chǔ)解決方案,支持容量為4M,不需要使用安全插件,HTML的web Storage 提供了兩種在客戶端存儲(chǔ)數(shù)據(jù)的方式.

  • localStorage: 是一種沒有時(shí)間限制的數(shù)據(jù)存儲(chǔ)方式,可以永久性的將數(shù)據(jù)保存在客戶端
  • sessionStorage:指的是針對一個(gè)session的數(shù)據(jù)存儲(chǔ),就是將數(shù)據(jù)保存在session對象中,當(dāng)關(guān)閉瀏覽器后,這些數(shù)據(jù)會(huì)被刪除.

在使用web存儲(chǔ)前,應(yīng)該使用typeof(Storage)=='undefined'函數(shù)來判斷是否支持storage.

webStorage支持的屬性及方法:

  • getItem(key)
  • key(index)
  • length
  • removeItem(key)
  • setItem(key, value)
  • clear()

WebSQL

webSql 并不是HTML5的規(guī)范組成部分, 而是單獨(dú)的規(guī)范.
HTML5對WebSQL的操作包含以下3個(gè)核心的方法.

  • openDatabase: 使用現(xiàn)有的數(shù)據(jù)庫,或者新建數(shù)據(jù)庫來創(chuàng)建數(shù)據(jù)庫對象
  • transaction: 這個(gè)方法允許我們執(zhí)行事務(wù)處理
  • executeSql: 這個(gè)方法用于執(zhí)行SQL語句

openDatabase的參數(shù):

  • name: 數(shù)據(jù)庫名字
  • version: 數(shù)據(jù)庫版本號
  • displayName: 數(shù)據(jù)庫描述
  • estimatedSize; 數(shù)據(jù)庫存儲(chǔ)數(shù)據(jù)的大小(字節(jié)為單位)
  • creationCallback: 回調(diào)函數(shù),可不傳

transaction的參數(shù):

  • 一個(gè)匿名函數(shù),該匿名函數(shù)的參數(shù)是transaction對象的引用,可以使其來進(jìn)行增刪改查的操作

executeSql的參數(shù):

  • sql: 要執(zhí)行的sql語句
  • []:sql語句中的占位符'?' 對應(yīng)的值
  • dataHandler: 執(zhí)行sql語句成功是調(diào)用的回調(diào)函數(shù)
  • errorHandler: 執(zhí)行sql語句出錯(cuò)是調(diào)用的函數(shù)
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>JOE</title>
        <style type="text/css">
        </style>
        <script type="text/javascript" src="jquery-3.2.1.min.js">
            
        </script>
        <script type="text/javascript">
            function getCurrentDB() {
                var db = openDatabase('Demo.db', '1.0', 'demo database', 1024*1024);
                return db;
            }
            
            function initDB() {
                var db = getCurrentDB();
                if(!db){
                    alert('不支持websql');
                    return;
                }
                db.transaction(function(tx){
                    tx.executeSql('create table if not exists Demo(username text null, title text null, content text null)',[],function(tx, result){}, function(tx, message){
                        alert(message);
                    });
                });
            }
            
            window.onload = function(){
                initDB();
            }
            
            function saveContent() {
                    var userName = document.getElementById('username').value;
                    var title = document.getElementById('title').value;
                    var content = document.getElementById('content').value;
                    var db = getCurrentDB();
                    alert(userName+'  '+title+'  '+content);
                    db.transaction(function(tx){
                        tx.executeSql('insert into Demo(username, title, content) values(?,?,?)',[userName,title,content], function(tx,result){},function(tx,result){
                            alert(message);
                        });
                    });
            }
            
                
                function showContent() {
                    var db = getCurrentDB();
                    db.transaction(function(tx){
                        tx.executeSql('select * from Demo',[],function(tx,result){
                            
                            if(result){
                                for (var i = 0; i < result.rows.length; i++) {
//                                  alert(result.rows);
                                    appendDataWithResult(result.rows.item(i));
                                }
                            }
                        },function(tx,message){});
                    });
//                  alert('show');
                }
                
                function appendDataWithResult(item){                    
                    var strHtml = '<tr><td>用戶名:'+item.username+'</td></tr>'+'<td>標(biāo)題:'+item.title+'</td></tr>'+'<td>留言:'+item.content+'</td></tr>';
                    $('#newTable').append(strHtml); 
                }
            
        </script>
    </head>
    <body>
        <div id="websql">
            <table id="myTable">
                <tr>
                    <td>用戶名:</td>
                    <td><input type="text" name="username" id="username" value="" required=""/></td>
                </tr>
                <tr>
                    <td>標(biāo)題:</td>
                    <td><input type="text" name="title" id="title" value="" required=""/></td>
                </tr>
                <tr>
                    <td>留言:</td>
                    <td><input type="text" name="content" id="content" value="" required/></td>
                </tr>
            </table>
            <hr />
            <input type="button" name="show" id="show" value="顯示" onclick="showContent()"/>
            <input type="button" name="" id="" value="保存" onclick="saveContent()" />
            <table border="1px" cellspacing="" cellpadding="" id='newTable'>
            </table>
            <br />
        </div>
        
    </body>
</html>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子衡创,更是在濱河造成了極大的恐慌览妖,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件礼患,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伪节,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绩鸣,“玉大人怀大,你說我怎么就攤上這事⊙轿牛” “怎么了化借?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捡多。 經(jīng)常有香客問我蓖康,道長铐炫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任蒜焊,我火速辦了婚禮倒信,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泳梆。我一直安慰自己鳖悠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布优妙。 她就那樣靜靜地躺著乘综,像睡著了一般。 火紅的嫁衣襯著肌膚如雪套硼。 梳的紋絲不亂的頭發(fā)上卡辰,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音邪意,去河邊找鬼九妈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛抄罕,可吹牛的內(nèi)容都是我干的允蚣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼呆贿,長吁一口氣:“原來是場噩夢啊……” “哼嚷兔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起做入,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤冒晰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后竟块,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壶运,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年浪秘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒋情。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耸携,死狀恐怖棵癣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夺衍,我是刑警寧澤狈谊,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響河劝,放射性物質(zhì)發(fā)生泄漏壁榕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一赎瞎、第九天 我趴在偏房一處隱蔽的房頂上張望牌里。 院中可真熱鬧,春花似錦煎娇、人聲如沸二庵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杭隙,卻和暖如春哟绊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痰憎。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工票髓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铣耘。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓洽沟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜗细。 傳聞我的和親對象是個(gè)殘疾皇子裆操,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容