JavaScript技巧总结和本地存储(二)
- 离线检测
检测是否离线,html5为此定义了一个navigator.onLine属性,这个属性为true表示设备能上网,false表示离线,这个属性还有点兼容问题。因此单独使用这个属性不能确定网络是否连通,即便如此,在请求发生错误的情况,检测这个属性仍然是管用的。
Html5还定义了两个事件:online和offline,当网络从离线变为在线或者从在线变为离线时,分别触发这两个事件。
- 应用缓存
Hmtl5的应用缓存是专门为开发离线web应用而设计的,Appcache就是从浏览器的缓存中分出来的一块缓存区,要想在这个缓存中保存数据,可以使用一个描述文件(manifest file),列出要下载和缓存的资源:
CACHE MANIFEST
#Comment file.js file.css
要将描述文件与页面关联起来,可以在<html>中的manifest属性中指定这个文件路径。
虽然应用缓存的意图是确保离线时资源可用,但也有相应的JavaScript API 让你知道它在做什么。这个API的核心是applicationCache对象,这个对象有一个status属性,属性的值是常量,表示应用缓存的如下当前状态。
- 0:无缓存
- 1:闲置
- 2:检查中
- 3:下载中
- 4:更新完成
- 5:废弃
应用缓存还有很多相关的事件,表示其状态的改变
- checking:在浏览器为应用缓存查找更新时触发
- error:在检查更新或下载资源期间发生错误时触发
- noupdate:在检查描述文体发现文件无变化时触发
- downloading:在开始下载应用缓存资源时触发
- progress:在文件下载应用缓存的过程中持续不断地触发
- updateready:在页面新的应用缓存下载完毕可以通过swapcache使用时触发
- cached:在应用缓存完整可用时触发
- 数据存储
- HTTP Cookie是在客户端用于存储会话信息的,该标准要求服务器对任意http请求发送Set-Cookie HTTP头作为响应的一部分,其中包括会话信息。
- 限制:cookie在性质上是绑定的域名下的,当设定了一个cookie后,再给创建它的域名发生请求时,都会包含中国cookie,这个限制确保了存储在cookie中的信息只能让批准的接受者访问,而无法被其他域访问。
- Cookie的构造
Cookie由浏览器保存的以下几块信息构成:
名称:一个唯一确定cookie的名称。
值:存储在cookie中的字符串,
域:cookie对于哪个域是有效的
路径:对于指定域中的那个路径,应该向服务器发送cookie
失效时间:表示cookie何时应该被删除。
安全标志:指定后,cookie只有在使用SSL连接的时候才发生到服务器。
- JavaScript中的cookie
Cookie所有名字和值都是经过URL编码的,所以必须使用decodeURIComponent来解码。
由于JavaScript中读写cookie不是非常直观,常常需要写一些函数来简化cookie的功能,基本的cookie操作有三种:读取、写入和删除:
var CookieUtil={
get:function(name){
var cookieName=encodeURIComponent(name)+”=”,
cookieStart=document.cookie.indexOf(cookieName),
cookieValue=null;
if(cookieStart>-1){
var cookieEnd=document.cookie.indexOf(“;”,cookieStart);
if(cookieEnd==-1){
cookieEnd=document.cookie.length;
}
cookieValue=decodeURIComponent(doucument.cookie.substring(cookieStart+cookieName.length,cookieEnd));
}
Retrun cookieValue;
},
set:function(name,value,expires,path,domain,secure){
var cookieText=encodeURIComponent(name)+”=”+encodeURIComponent(value);
if(expires instanceof Date){
cookieText+=”; expires=”+expires.toGMTString();
}
if(path){
cookieText+=”; path=”+path;
}
if(domain){
cookieText+=”; domain=”+domain;
}
if(secure){
cookieText+=”; secure”;
}
Document.cookie=cookieText;
},
unset:function(name,path,domain,secure){
this.set(name,””,new Date(0),path,domain,secure);
}
}
- 子cookie
为了绕开浏览器的单域名下的cookie数限制,一些开发人员使用了一种称为子cookie的概念。子cookie是存放在单个cookie中的更小段的数据。也就是使用cookie值来存储多个名称值对儿。
- Web存储机制
也就是html5新加的sessionStorage 和localStorage
JavaScript技巧总结和本地存储(二)的更多相关文章
- JavaScript技巧总结和本地存储(一)
类型检测 typeof 一般用于js的基本数据类型(undefined,number,string,boolean.注意null检测的结构是object)检测,引用类型检测不准确. instanceo ...
- JavaScript:浏览器的本地存储
cookie.localStorage.sessionStorage的使用 <!DOCTYPE html> <html lang="en"> <hea ...
- H5本地存储二
众所周知,H5的storage有sessionstorage&localStorage,其中他们的共同特点是API相同 下面直接上代码,storage中的存储与删除: <!DOCTYPE ...
- HTML5 学习总结(三)——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- HTML5 学习笔记(三)——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- HTML5 ——本地存储
目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...
- HTML5 学习总结(三)——本地存储(localStorage、sessionStorage、WebSqlDataBase、IndexedDB)
HTML5问世以后,前端加入了一个重要的功能,便是本地存储,本地存储可分为4类: Local Storage:总的存储量有所限制,并不能提供真正的检索API,数据的生命期比窗口或浏览器的生命期长,数据 ...
- web前端实现本地存储
当我们在提及web前端本地存储的时候,首先需要介绍一下本地化存储的概念和历史.本地化存储从来不是一个新奇的概念,因为web应用程序一直在追求的就是媲美甚至超越桌面应用程序.但是桌面应用程序一直优于we ...
随机推荐
- Android 基本控件的常用属性
TextView //normal 默认 bold 粗体 italic斜体 可用| 多选 android:textStyle //设置限定可以输入哪些字符 android:digits //设置文本可 ...
- (后端)Mybatis实现批量删除操作(转)
原文地址:https://blog.csdn.net/javaee_sunny/article/details/52511842 一. 这里主要考虑两种参数类型:数组或者集合. 而这点区别主要体现在E ...
- 有字库API方法使用一二
有字库是全球第一中文web font(在线字体)服务平台,官网写的有点牛X 需要注册帐号才可以使用,免费字体有限制,一页字数不可以超过500 个,超过500个字体就不会为标签添加字体样式,比较坑爹! ...
- ERP项目应该由谁来主导?
前段时间在朋友圈看到了别人分享的公众号,主要是谈ERP项目应该由谁来主导的问题.文章的观点认为应该由哪个部门主导ERP的判断标准如下: 1.应该由一个期望上进的部门主导ERP项目: 2.应该由一个有话 ...
- 你的leader还在考核你的千行代码Bug率吗?
管理学大师德鲁克说:你如果你无法度量它,就无法管理它.要想做有效的管理,就很难绕开度量的问题. 软件开发的过程或者技术团队的管理也存在着如何去合理的度量效率的问题.而度量是把双刃剑,度量具有极强的引导 ...
- web前端(7)—— 了解CSS样式,引入css样式的方式
CSS 在前面大概的介绍了css,从本片博文开始,会详细的介绍它,在最开始介绍web前端时,打开百度首页,当时我提出了一个问题,为什么百度首页的输入框可以放在正中间,就是由于有css的控制,我们可以打 ...
- 打印窗口时,一张A4纸单位为缇的大小
一张A4长297毫米也就是16839.9twip宽210毫米就是11907twip
- java求解第N个素数(质数)
面试中,遇到一个题目:求解第N个素数. import java.util.Scanner; public class GetPrimeNumber { public static int NthPri ...
- LeetCode算法题-Convert a Number to Hexadecimal(Java实现)
这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...
- voinc+vue实现级联选择
需求: vonic中实现级联选择 <!DOCTYPE html> <html> <head> <title>下拉框</title> < ...