ホームページ ウェブフロントエンド htmlチュートリアル H5 のローカル ストレージとローカル データベースの詳細な紹介

H5 のローカル ストレージとローカル データベースの詳細な紹介

Jan 19, 2018 am 09:48 AM
html5 ストレージ データベース

今回は、H5 のローカル ストレージとローカル データベースについて詳しくご紹介します。H5 のローカル ストレージとローカル データベースを使用する際の 注意事項 について、実際の事例を見てみましょう。

ローカルストレージ

1.1 ローカルストレージの起源の背景

HTML4時代のCookieのサイズ、形式、保存データ形式の制限により、Webサイトアプリケーションがユーザーの情報の一部をローカルストレージに保存したい場合、ブラウザ側では Cookie のみを使用できます。ただし、Cookie のこれらの制限は、Cookie が ID などの識別子などの単純なデータのみを保存できることを意味します。

Cookie の制限は次のとおりです:

ほとんどのブラウザは、最大 4096 バイトの Cookie をサポートします。

ブラウザは、サイトがユーザーのコンピュータに保存できる Cookie の数も制限します。ほとんどのブラウザでは、サイトごとに 20 個の Cookie しか許可されません。それ以上の Cookie を保存しようとすると、最も古い Cookie が破棄されます。

一部のブラウザでは、すべてのサイトから受け入れる Cookie の総数に絶対的な制限 (通常は 300) が設定されています。

デフォルトでは、Cookie は HTTP リクエストとともにバックエンドサーバーに送信されますが、すべてのリクエストに Cookie が必要なわけではありません。たとえば、JS、CSS、画像などのリクエストには Cookie が必要ありません。

Cookie の一連の制限を打ち破るために、HTML5 は JS の新しい API を通じて大量のデータをクライアント ブラウザに直接保存できるようになり、複雑なローカル データベースをサポートして JS をより効率的にします。

html5 は 2 種類の WebStorage をサポートしています:

永続的なローカル ストレージ (localStorage)

セッション レベルのローカル ストレージ (sessionStorage)

1.2 永続的なローカル ストレージ: localStorage

最新の JS API に追加されました localStorage オブジェクトにより、ユーザーは簡単に保存できますウェブ側のデータを永続的に保存します。さらに、データは HTTP リクエストと一緒にバックエンド サーバーに送信されず、HTML5 標準ではブラウザが少なくとも 4MB をサポートする必要があるため、保存されるデータのサイズは基本的に考慮する必要がありません。 Cookie の制限を打ち破り、Web に優れたソリューションを提供します。このアプリケーションは、複雑なユーザー追跡データをローカルに保存して、非常に便利な技術サポートを提供します。次に、localStorageのよく使われるメソッドを紹介します。

localStorage は、ローカル ストレージ上で関連する操作を実行するのに役立つ 4 つのメソッドを提供します。

setItem(key,value) はローカル ストレージ データを追加します。 2 つのパラメータは非常に単純なので、詳細は説明しません。

getItem(key) は、キーを介して対応する値を取得します。

removeItem(key) はキーごとにローカルデータを削除します。

clear() はデータをクリアします。

コードは次のとおりです:

<script type="text/javascript">
    //添加key-value 数据到 sessionStorage
    localStorage.setItem("demokey", "http://www.shiyanlou.com");
    //通过key来获取value
    var dt = localStorage.getItem("demokey");
    alert(dt);
    //清空所有的key-value数据。
    //localStorage.clear();
    alert(localStorage.length);
</script>
ログイン後にコピー

1.3 セッションレベルのローカルストレージ: sessionStorage

HTML5: sessionStorage に Js オブジェクトが追加されました。このオブジェクトを通じて、ブラウザに保存されているセッションレベルの WebStorage を直接操作できます。 sessionStorage に保存されるデータは、最初は Key-Value の形式であり、ブラウザの現在のセッションに関連付けられており、有効期限が設定されていない Cookie と同様に、セッションが終了するとデータは自動的に消去されます。 。

sessionStorage は、ローカル ストレージ上で関連する操作を実行する際に役立つ 4 つのメソッドを提供します。

setItem(key,value) はローカル ストレージ データを追加します。 2 つのパラメータは非常に単純なので、詳細は説明しません。

getItem(key) は、キーを介して対応する値を取得します。

removeItem(key) はキーごとにローカルデータを削除します。

clear() はデータをクリアします。

コードは次のとおりです:

<script type="text/javascript">
    //添加key-value 数据到 sessionStorage
    sessionStorage.setItem("demokey", "http://blog.itjeek.com");
    //通过key来获取value
    var dt = sessionStorage.getItem("demokey");
    alert(dt);
    //清空所有的key-value数据。
    //sessionStorage.clear();
    alert(sessionStorage.length);
</script>
ログイン後にコピー

1.4 強力なローカル データ

HTML5 は強力な localStorage と sessionStorage を提供しますが、どちらも単純なデータ構造を保存するためのデータしか提供できず、複雑な Web アプリケーション データには適していません。できる。驚くべきことに、HTML5 はブラウザー側でデータベース サポートを提供し、JS API を介してブラウザー側でローカル データベースを直接作成できるようになり、標準 SQL CRUD 操作をサポートして、オフライン Web アプリケーションが構造化されたデータをより便利に保存できるようになりました。 。次に、関連するAPIとローカルデータの利用方法について紹介します。

ローカル データベースを操作するための最も基本的な手順は次のとおりです:

ステップ 1: openDatabase メソッド: データベースにアクセスするためのオブジェクトを作成します。

2 番目のステップ: 最初のステップで作成したデータベース アクセス オブジェクトを使用して、トランザクション メソッドを実行します。このメソッドを通じて、トランザクションを正常に開始するためのイベント応答メソッドを設定できます。

ステップ 3: パスexecuteSql メソッドはクエリを実行します。もちろん、クエリは CRUD にすることができます。

次に、パラメータと関連メソッドの使用法を紹介します。

1.4.1 openDatabase メソッド

//デモ: データベースが存在しない場合は、データベースを作成します

var dataBase = openDatabase(“student”, “1.0”, “学生表”, 1024 * 1024, function () { });
ログイン後にコピー


openDatabase メソッドは、データベースが存在しない場合、既存のデータベースを開きます。まだ

データベースを作成

できます。いくつかのパラメータの意味は次のとおりです: データベース名。

データベースのバージョン番号。現在は 1.0 で十分です。もちろん、入力する必要はありません。

データベースの説明。

割り当てられるデータベースのサイズを設定します(単位はkb)。

コールバック関数

(省略可能)。 初回通話時にデータベースを作成し、接続を確立します。

1.4.2 db.transaction方法

可以设置一个回调函数,此函数可以接受一个参数就是我们开启的事务的对象。然后通过此对象可以执行SQL脚本。

<head>
 <script src="Scripts/jquery-1.5.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function initDatabase() {
            var db = getCurrentDb();//初始化数据库
            if(!db) {alert("您的浏览器不支持HTML5本地数据库");return;}
            db.transaction(function (trans) {//启动一个事务,并设置回调函数
                //执行创建表的Sql脚本
                trans.executeSql("create table if not exists Demo(uName text null,title text null,words text null)", [], function (trans, result) {
                }, function (trans, message) {//消息的回调函数alert(message);});
            }, function (trans, result) {
            }, function (trans, message) {
            });
        }
        $(function () {//页面加载完成后绑定页面按钮的点击事件
            initDatabase();
            $("#btnSave").click(function () {
                var txtName = $("#txtName").val();
                var txtTitle = $("#txtTitle").val();
                var txtWords = $("#txtWords").val();
                var db = getCurrentDb();
                //执行sql脚本,插入数据
                db.transaction(function (trans) {
                    trans.executeSql("insert into Demo(uName,title,words) values(?,?,?) ", [txtName, txtTitle, txtWords], function (ts, data) {
                    }, function (ts, message) {
                        alert(message);
                    });
                });
                showAllTheData();
            });
        });
        function getCurrentDb() {
            //打开数据库,或者直接连接数据库参数:数据库名称,版本,概述,大小
            //如果数据库不存在那么创建之
            var db = openDatabase("myDb", "1.0", "it&#39;s to save demo data!", 1024 * 1024); ;
            return db;
        }
        //显示所有数据库中的数据到页面上去
        function showAllTheData() {
            $("#tblData").empty();
            var db = getCurrentDb();
            db.transaction(function (trans) {
                trans.executeSql("select * from Demo ", [], function (ts, data) {
                    if (data) {
                        for (var i = 0; i < data.rows.length; i++) {
                            appendDataToTable(data.rows.item(i));//获取某行数据的json对象
                        }
                    }
                }, function (ts, message) {alert(message);var tst = message;});
            });
        }
        function appendDataToTable(data) {//将数据展示到表格里面
            //uName,title,words
            var txtName = data.uName;
            var txtTitle = data.title;
            var words = data.words;
            var strHtml = "";
            strHtml += "<tr>";
            strHtml += "<td>"+txtName+"</td>";
            strHtml += "<td>" + txtTitle + "</td>";
            strHtml += "<td>" + words + "</td>";
            strHtml += "</tr>";
            $("#tblData").append(strHtml);
        }
    </script>
</head>
    <body>
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="txtName" id="txtName" required/></td>
            </tr>
               <tr>
                <td>标题:</td>
                <td><input type="text" name="txtTitle" id="txtTitle" required/></td>
            </tr>
            <tr>
                <td>留言:</td>
                <td><input type="text" name="txtWords" id="txtWords" required/></td>
            </tr>
        </table>
        <input type="button" value="保存" id="btnSave"/>
        <hr/>
        <input type="button" value="展示所哟数据" onclick="showAllTheData();"/>
        <table id="tblData">
        </table>
    </body>
</html>
ログイン後にコピー

相信看了这些案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

HTML的table鼠标拖拽排序该如何实现

html属于什么文件html的文件该如何打开 

html怎样实现页面跳转时传递参数

以上がH5 のローカル ストレージとローカル データベースの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles