H5的本地存储和本地数据库详细介绍

这次给大家带来h5的本地存储和本地数据库详细介绍,使用h5的本地存储和本地数据库的注意事项有哪些,下面就是实战案例,一起来看一下。

本地存储

1.1 本地存储由来的背景

由于HTML4时代Cookie的大小、格式、存储数据格式等限制,网站应用如果想在浏览器端存储用户的部分信息,那么只能借助于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支持两种的WebStorage:

永久性的本地存储(localStorage)

会话级别的本地存储(sessionStorage)

1.2 永久性的本地存储:localStorage

在最新的JS的API中增加了localStorage对象,便于用户存储永久存储的Web端的数据。而且数据不会随着Http请求发送到后台服务器,而且存储数据的大小基本不用考虑,因为在Html5的标准中要求浏览器至少要支持到4MB.所以,这完全是颠覆了Cookie的限制,为Web应用在本地存储复杂的用户痕迹数据提供非常方便的技术支持。接下来就将介绍localStorage的常用的方法。

localStorage提供了四个方法来辅助我们进行对本地存储做相关操作。

setItem(key,value)添加本地存储数据。两个参数,非常简单就不说了。

getItem(key)通过key获取相应的Value。

removeItem(key)通过key删除本地数据。

clear()清空数据。

代码如下:

    //添加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);

1.3 会话级别的本地存储:sessionStorage

在HTML5中增加了一个Js对象:sessionStorage;通过此对象可以直接操作存储在浏览器中的会话级别的WebStorage。存储在sessionStorage中的数据首先是Key-Value形式的,另外就是它跟浏览器当前会话相关,当会话结束后,数据会自动清除,跟未设置过期时间的Cookie类似。

sessionStorage提供了四个方法来辅助我们进行对本地存储做相关操作。

setItem(key,value)添加本地存储数据。两个参数,非常简单就不说了。

getItem(key)通过key获取相应的Value。

removeItem(key)通过key删除本地数据。

clear()清空数据。

代码如下:

    //添加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);

1.4 强大的本地数据

虽然HTML5已经提供了功能强大的localStorage和sessionStorage,但是他们两个都只能提供存储简单数据结构的数据,对于复杂的Web应用的数据却无能为力。逆天的是HTML5提供了一个浏览器端的数据库支持,允许我们直接通JS的API在浏览器端创建一个本地的数据库,而且支持标准的SQL的CRUD操作,让离线的Web应用更加方便的存储结构化的数据。接下里介绍一下本地数据的相关API和用法。

操作本地数据库的最基本的步骤是:

第一步:openDatabase方法:创建一个访问数据库的对象。

第二步:使用第一步创建的数据库访问对象来执行transaction方法,通过此方法可以设置一个开启事务成功的事件响应方法,在事件响应方法中可以执行SQL.

第三步:通过executeSql方法执行查询,当然查询可以是:CRUD。

接下来分别介绍一下相关的方法的参数和用法。

1.4.1 openDatabase方法

//Demo:获取或者创建一个数据库,如果数据库不存在那么创建之

var dataBase = openDatabase(“student”, “1.0”, “学生表”, 1024 * 1024, function () { });

openDatabase方法打开一个已经存在的数据库,如果数据库不存在,它还可以创建数据库。几个参数意义分别是:

数据库名称。

数据库的版本号,目前来说传个1.0就可以了,当然可以不填;

对数据库的描述。

设置分配的数据库的大小(单位是kb)。

回调函数(可省略)。

初次调用时创建数据库,以后就是建立连接了。

1.4.2 db.transaction方法

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

             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'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 += "";            strHtml += ""+txtName+"";            strHtml += "" + txtTitle + "";            strHtml += "" + words + "";            strHtml += "";            $("#tblData").append(strHtml);        }                
用户名:
标题:
留言:

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

相关阅读:

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

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

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

以上就是H5的本地存储和本地数据库详细介绍的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1545555.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 17:04:06
下一篇 2025年12月16日 16:07:00

相关推荐

  • h5如何实现记住密码功能

    这次给大家带来h5如何实现记住密码功能,h5实现记住密码功能的注意事项有哪些,下面就是实战案例,一起来看一下。 HTML5 提供了两种在客户端存储数据的新方法: localStorage – 没有时间限制的数据存储 sessionStorage – 针对一个 session …

    好文分享 2025年12月21日
    000
  • 怎样用h5的sse服务器发送EventSource事件

    这次给大家带来怎样用h5的sse服务器发送eventsource事件,用h5的sse服务器发送eventsource事件的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 我前面文章讲过数据大屏,里面的数据时时更新。还有时时更新的股票数据,Facebook/Twitter 更新、估价更新、新的…

    好文分享 2025年12月21日
    000
  • HTML5的WEB界面中meta实列详解

    这次给大家带来html5的web界面中meta实列详解,使用html5的web界面中meta的注意事项有哪些,下面就是实战案例,一起来看一下。 简介 meta标签是HTML语言HEAD区的一个辅助性标签。 meta常用于定义页面的说明,关键字,最后修改日期,和其它的元数据。这些元数据将服务于浏览器(…

    好文分享 2025年12月21日
    000
  • 关于html5中图片抛物线运动技巧分享

    本文主要介绍了浅谈关于h5中图片抛物线运动的一些心得,详细的介绍了沿贝塞尔曲线运动的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。 常见的, 物体/图片做抛物线或者更准确的说是沿贝塞尔曲线运动是H5开发中常见的需求, 那么如何快速的根据设计稿计算出运动路径是开发者首要解决…

    2025年12月21日
    000
  • HTML5打开手机扫码功能及优缺点_html5教程技巧

    这篇文章主要介绍了html5打开手机扫码功能及优缺点的相关html5资料,对html5感兴趣的朋友可以参考下 1.解决的问题: 1.能够在微博客户端呼起摄像头扫描二维码并且解析; 2.能够在原生浏览器和微信客户端中扫描二维码并且解析; 2.优点: 立即学习“前端免费学习笔记(深入)”; web端或者…

    好文分享 2025年12月21日
    000
  • HTML5实现分享各大微信QQ等交流平台二维码功能

    本文主要介绍了html5实现分享到微信好友朋友圈qq好友qq空间微博二维码功能的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下,希望能帮助到大家。 这是分享按钮: 通用分享微信好友朋友圈QQQQ空间微博  这是js调用代码: var nativeShare = new NativeSha…

    好文分享 2025年12月21日
    000
  • HTML5 Ajax文件上传进度条如何显示

    这篇文章主要介绍了html5 ajax文件上传进度条是如何显示的,基于原生html5实现,不需要falsh支持,进度可以自定义显示,控制灵活,对html5上传进度条感兴趣的小伙伴们可以参考一下 原本打算使用jquery插件进行异步文件上传,比如uploadfy但是需要额外的支持,也有人用iframe…

    好文分享 2025年12月21日
    000
  • 巧用HTML5给按钮背景设计不同的动画

    如何巧用html5设计按钮背景不同动画特效,在该特效中,当鼠标滑过按钮时,使用css3   animation 来动画   background-size  和  background-position  属性,来实现各种背景动画效果。本文就和大家分享html5给按钮背景设计不同的动画简单实例。小编…

    2025年12月21日 好文分享
    000
  • 用h5做出微信的支付过程的实现步骤

    这次给大家实现的案例是用户在微信里打开网页的时候,也可以调用微信支付来完成下单功能。当然,微信官网的,开发文档也有很详细的介绍,但是今天我们来教大家怎样手动做出支付接口的开发。 以提交问题流程为例描述分答微信h5支付过程 1、提交问题domobiletutor方法 (1)费用 (2)支付说明 (3)…

    2025年12月21日
    000
  • 用H5做有特效的下拉框

    今天教大家如何用h5做出一个有小特效的下拉框。当你点击下拉框的内容会就出现在文本域中的一个小特效,下面来看一下详细案列代码。 HTML中有个下拉框,包含“风,雨,雷,电”,添加事件,当选择风时,文本域内出现选择 Title 风 雨 雷 电 function ShowToText(){ documen…

    好文分享 2025年12月21日
    000
  • html5中的DOM编程的实现步骤

    这次给大家介绍什么是dom编程,我们知道,dom是documentobjectmodel的缩写,中文名称是文档对象模型。同时dom也是处理html页面的标准编程接口,那么我们为什么要学习dom呢? 1,DOM可以让用户对网页元素进行交互操作 比如,当我点击了一个按钮,弹出一个对话框等操作。 2,DO…

    好文分享 2025年12月21日
    000
  • 服务端主动发送数据回客户端在H5里的实现步奏

    我们知道,在server sent event里,通过eventsource对象接收服务器发送事件的通知是有三个事件的,message, open, error这三种,今天就给大家演示一下服务端主动发送数据回客户端在h5里的实现步奏。 Server Sent Event Server Sent Ev…

    好文分享 2025年12月21日
    000
  • H5的多线程如何实现Web Worker

    很多人问过我,h5的多线程如何实现web worker的?当我们说到这个问题的时候首先你需要知道,什么是web worker,那么今天就来给大家解答下这个问题。 将JavaScript代码交给Web Worker在后台执行时,页面就可以在JavaScript运行期间依然可以响应用户操作,以防止出现页…

    好文分享 2025年12月21日
    000
  • h5里js和servlet实现文件上传的实现步骤

    这次教大家的是在h5里如何用js和servlet来实现文件上传,不过有一个前提条件,必须要是h5和jsp3.0版本,因为用到了新属性,获取file对象和后台得到part对象。 下面给大家看一个案列 前台jsp Insert title here name: 文件: 提交 function btu()…

    好文分享 2025年12月21日
    000
  • H5做出手机摇一摇功能的实现步骤

    今天教大家用html5来在网页里实现一个很炫酷的功能,手机摇一摇。如果你之前做过手机端的开发,可能对于这样的功能非常了解。但是下面,我们将在web上首次实现这个功能。 方向事件deviceorientation 该事件实在设备方向发生变化时触发, 使用方法如下; window.addEventLis…

    好文分享 2025年12月21日
    000
  • H5中的弹窗无法用webview弹出怎么解决

    我们偶尔会用到这样一种bug,虽然使用了webview,但是还无法吊起h5中的弹窗。那么怎么解决这个问题呢?我们来看一下。 问题: webview无法吊起H5中的弹窗。 解决方法: 如果是fragment,必须使用getactivity()上下文,不能用全家上下文,否则无法弹窗。 mWebView.…

    好文分享 2025年12月21日
    000
  • html5制作转盘的详解及实例

    今天给大家带来的案列是html5转盘实例,可以直接拿来做抽奖程序,有需要的朋友可以拿去使用,下面是案列代码。 html5制作转盘游戏 h1{ width: 100%; height: 3rem; line-height: 3rem; font-size: 1.8rem; color:#c60; te…

    好文分享 2025年12月21日
    000
  • HTML5中的progress元素的详细介绍及兼容性处理

    本篇文章主要为大家介绍,progress元素的基本属性以及兼容性处理。介绍完progress元素后,下面一个案列也帮助大家更好的理解,一起来看一下。、 一、progress元素基本了解 1.基本UI progress元素属于HTML5家族,指进度条。IE10+以及其他靠谱浏览器都支持。如下简单cod…

    好文分享 2025年12月21日
    000
  • 浏览器兼容HTML5和CSS3的问题

     html5和css3是非常好用并且功能强大的新属性,唯一的重大缺陷就是可能很多旧版浏览器不兼容,今天就给大家分享一下关于旧版的浏览器兼容html5和css3的问题。 1.让老式浏览器支持HTML5  HTML5能为我们做的事儿很多,最为可口的就是语义化标签的应用,如果你已经在Chrome或者其他支…

    好文分享 2025年12月21日
    000
  • H5里的postMessage API图文详解 详细介绍

    关于postmessage,虽然说是html5的功能但是支持ie8+,假如你的网站不需要支持ie6和ie7,那么可以使用window.postmessage。既可以跨域传递,也可以同域传递。 我只是简单的举一个应用场景,当然,这个功能很多地方可以使用。 假如你有一个页面,页面中拿到部分用户信息,点击…

    好文分享 2025年12月21日
    000

发表回复

登录后才能评论
关注微信