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月21日 17:04:16

相关推荐

  • 手把手教你用 transition 实现短视频 APP的点赞动画

    怎么使用纯 css 实现有趣的点赞动画?下面本篇文章就带大家了解一下巧妙借助 transition实现点赞动画的方法,希望对大家有所帮助! 在各种短视频界面上,我们经常会看到类似这样的点赞动画: 非常的有意思,有意思的交互会让用户更愿意进行互动。 那么,这么有趣的点赞动画,有没有可能使用纯 CSS …

    2025年12月24日 好文分享
    000
  • 教你使用css3给字体添加立体效果(附代码)

    之前的文章《手把手教你怎么使用html+css实现轮播图效果(代码分享)》中,给大家介绍了怎么使用html+css实现轮播图效果。下面本篇文章给大家介绍怎么使用css3给字体添加立体效果,我们一起看看怎么做。 字体添加立体效果图如下 1、新建一个html文件,首先写div标签输入写contented…

    2025年12月24日 好文分享
    000
  • 手把手教你使用css3制作炫酷的导航栏效果(代码详解)

    之前的文章《教你使用css3给字体添加立体效果(附代码)》中,给大家介绍了怎么使用css3给字体添加立体效果。下面本篇文章给大家介绍怎么使用CSS3制作炫酷的导航栏效果,我们一起看看怎么做。 炫酷的导航栏效果图如下 CSS3制作炫酷的导航栏效果的方法 1、新建一个html文件,首先写div标签输入写…

    2025年12月24日 好文分享
    000
  • 10款好看且实用的文字动画特效,让你的页面更吸引人!

    图片和文字是网页不可缺少的组成部分,图片运用得当可以让网页变得生动,但普通的文字不行。那么就可以给文字添加一些样式,实现一下好看的文字效果,让页面变得更交互,更吸引人。下面创想鸟就来给大家分享10款文字动画特效,好看且实用,快来收藏吧! 1、网页玻璃文字动画特效 模板简介:使用css3制作网页渐变底…

    2025年12月24日 好文分享
    000
  • 教你怎么使用css3给图片添加渐变效果(代码详解)

    之前的文章《手把手教你怎么使用CSS3实现动画效果(代码分享)》中,给大家介绍一下怎么使用css3动画效果设置经验。下面本篇文章给大家介绍怎么使用css3给图片添加渐变效果,伙伴们来看看一下。 初次接触css3渐变是在很早以前了,觉得这个东西很有意思哈,跟玩 PS 似的,可以做出很多华丽的东西。 浏…

    2025年12月24日 好文分享
    000
  • 手把手教你使用CSS3制作一个简单页面的布局(代码详解)

    之前的文章《深入解析微信小程序页面中实现的保存图片(附代码)》中,给大家了解一下微信小程序页面中实现的保存图片。下面本篇文章给大家介绍怎么使用CSS3制作一个简单页面的布局,感兴趣的小伙伴们可以参考一下。 兼容性 2009 年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响…

    2025年12月24日 好文分享
    000
  • 聊聊你可能不了解的CSS属性函数 attr()

    本篇文章带大家了解一下css属性函数 attr()。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 属性函数 attr() 用于获取HTML元素里面的属性值,并用于样式中,但目前暂时只能应用于CSS元素中的伪元素。 例子 实现一个Tooltip 立即学习“前端免费学习笔记(深入)”…

    2025年12月24日 好文分享
    000
  • 5个有用的css函数(分享)

    CSS 包含了许多函数,而且它能够完成许多早期需要用 JavaScript才能完成的事情。每年都有新的特性被添加进来,这让我们的开发更加轻松,也减少了对JavaScript的依赖。CSS 函数是它所具有的最强大的特性之一,在本文中,我将介绍一些我认为有用的函数。 (学习视频分享:css视频教程) a…

    2025年12月24日 好文分享
    000
  • 使用HTML和CSS的新特性实现响应式布局

    除了使用媒体查询和现代CSS布局(如flexbox和grid)来创建响应式网站外,我们还可以做好某些被忽视的事情来制作响应式网站。在本文中,我们将探讨许多可用的工具(围绕HTML和CSS),从响应图像到相对较新的CSS函数,无论我们是否使用媒体查询,它们都可以正常工作。 事实上,媒体查询与这些功能一…

    2025年12月24日
    000
  • 适合初学者学习的CSS3实现可爱的动物

    适合初学者学习的CSS3实现可爱的动物 今天,我想向大家展示如何巧妙地使用HTML、CSS排序动画和SVG滤镜把生活中可能最可爱的东西之一——动物画到网页上。我们将探讨绘制动物的两种技术:一种使用纯HTML和CSS,另一种使用内联SVG背景图像。 此演示高度实验性质——动画SVG滤镜目前仅在Chro…

    2025年12月24日 好文分享
    000
  • CSS的工作过程介绍(图文)

    本篇文章给大家带来的内容是关于css的工作过程介绍(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 在平时的工作中,可能都是再用一些框架或者是简单的CSS来修饰我们的HTML页面,那么仔细想想一个资深的前端从业者,是否需要知道他的工作原理和过程呢,技术这种东西,当然是我们了解…

    2025年12月24日
    000
  • 如何使用CSS更改占位符颜色?(代码示例)

    在大多数浏览器中,占位符(在输入标记中)为灰色,要如何更改此占位符的颜色?本篇文章就来给大家解释使用css更改占位符颜色的方法,希望对大家有所帮助。 如何使用CSS更改占位符颜色? 在css中想要更改占位符的颜色,可以非标准选择器::placeholder来实现,它是用于设置表单输入框占位符的外观,…

    2025年12月24日 好文分享
    000
  • CSS实现页面底部固定的方法介绍(附代码)

    本篇文章给大家带来的内容是关于css实现页面底部固定的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 当我们在写页面时经常会遇到页面内容少的时候,footer会戳在页面中间或什么?反正就是不在最底部显示,反正就是很难看,下面要讲的布局就是解决如何使元素粘住浏览器底…

    好文分享 2025年12月24日
    000
  • css3如何实现元素环绕中心点布局(代码示例)

    本篇文章给大家带来的内容是关于css3如何实现元素环绕中心点布局(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 效果如图: 代码实现: *{ margin: 0; padding: 0; box-sizing: border-box; } .surround-box, …

    2025年12月24日
    000
  • 彻底理解CSS中视觉格式化模型(附示例)

    本篇文章给大家带来的内容是关于彻底理解css中视觉格式化模型(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 不论你在什么时候开始,重要的是开始之后不要停止。 前言 对于部分前端工程师来讲,有时候CSS令他们很头疼,明明设置了某个样式,但是布局就是不起作用。 如果你也有这种…

    2025年12月24日
    000
  • CSS中display: inline-block的用法解析

    本篇文章给大家带来的内容是关于css中display: inline-block的用法解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 迷之间隙 我们创建一个导航列表,并将其列表 item 设置为 inline-block,主要代码如下: 我 我 我.nav { backgrou…

    2025年12月24日
    000
  • css实现等高布局的三种方式(代码示例)

    本篇文章给大家带来的内容是关于css实现等高布局的三种方式(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 本文讲的等高布局是在不手动设置元素高度的情况下,使用纯css实现各个元素高度都相当的效果。如图: 1、使用table-cell实现(兼容IE8) 立即学习“前端免费…

    2025年12月24日
    000
  • 如何使用CSS设计出一个表单页面(附示例)

    本篇文章给大家带来的内容是关于如何使用css设计出一个表单页面(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 最近做项目总能遇到各种各样,千奇百怪的需求。用bootstrap等ui框架不能满足客户需求。只能开动自己脑筋,自己写一些样式。 如何调整input样式(包括pla…

    2025年12月24日
    000
  • css3如何设置placeholder的样式

    本篇文章给大家带来的内容是介绍如何使用css3设置placeholder的样式,让大家了解placeholder是什么,如何使用,如何修改修改(设置)其样式。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 首先我们来了解一下placeholder是什么? placeholder是H…

    2025年12月24日 好文分享
    000
  • CSS中文字相关属性的介绍

    本篇文章给大家带来的内容是关于css中文字相关属性的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 文本大小 {font-size:12px/14px/16px} 说明:   1)属性值为数值型时,必须给属性值加单位,属性值为0时除外。   2)单位还可以是pt,9pt=12p…

    好文分享 2025年12月24日
    300

发表回复

登录后才能评论
关注微信