• 离线检测

检测是否离线,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属性,属性的值是常量,表示应用缓存的如下当前状态。

    1. 0:无缓存
    2. 1:闲置
    3. 2:检查中
    4. 3:下载中
    5. 4:更新完成
    6. 5:废弃

应用缓存还有很多相关的事件,表示其状态的改变

    1. checking:在浏览器为应用缓存查找更新时触发
    2. error:在检查更新或下载资源期间发生错误时触发
    3. noupdate:在检查描述文体发现文件无变化时触发
    4. downloading:在开始下载应用缓存资源时触发
    5. progress:在文件下载应用缓存的过程中持续不断地触发
    6. updateready:在页面新的应用缓存下载完毕可以通过swapcache使用时触发
    7. cached:在应用缓存完整可用时触发
  • 数据存储
  1. HTTP Cookie是在客户端用于存储会话信息的,该标准要求服务器对任意http请求发送Set-Cookie HTTP头作为响应的一部分,其中包括会话信息。
  2. 限制:cookie在性质上是绑定的域名下的,当设定了一个cookie后,再给创建它的域名发生请求时,都会包含中国cookie,这个限制确保了存储在cookie中的信息只能让批准的接受者访问,而无法被其他域访问。
  3. Cookie的构造

Cookie由浏览器保存的以下几块信息构成:

名称:一个唯一确定cookie的名称。

值:存储在cookie中的字符串,

域:cookie对于哪个域是有效的

路径:对于指定域中的那个路径,应该向服务器发送cookie

失效时间:表示cookie何时应该被删除。

安全标志:指定后,cookie只有在使用SSL连接的时候才发生到服务器。

  1. 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);

}

}
  1. 子cookie

为了绕开浏览器的单域名下的cookie数限制,一些开发人员使用了一种称为子cookie的概念。子cookie是存放在单个cookie中的更小段的数据。也就是使用cookie值来存储多个名称值对儿。

  • Web存储机制

也就是html5新加的sessionStorage 和localStorage

JavaScript技巧总结和本地存储(二)的更多相关文章

  1. JavaScript技巧总结和本地存储(一)

    类型检测 typeof 一般用于js的基本数据类型(undefined,number,string,boolean.注意null检测的结构是object)检测,引用类型检测不准确. instanceo ...

  2. JavaScript:浏览器的本地存储

    cookie.localStorage.sessionStorage的使用 <!DOCTYPE html> <html lang="en"> <hea ...

  3. H5本地存储二

    众所周知,H5的storage有sessionstorage&localStorage,其中他们的共同特点是API相同 下面直接上代码,storage中的存储与删除: <!DOCTYPE ...

  4. HTML5 学习总结(三)——本地存储

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

  5. HTML5 学习笔记(三)——本地存储

    目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...

  6. HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)

    一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...

  7. HTML5 ——本地存储

    目录 一.HTML4客户端存储 1.1.提交表单发送到服务器的信息 1.2.客户端本地存储概要 二.localStorage 2.1.添加 2.2.取值 2.3.修改 2.4.删除 2.5.跨页面与跨 ...

  8. HTML5 学习总结(三)——本地存储(localStorage、sessionStorage、WebSqlDataBase、IndexedDB)

    HTML5问世以后,前端加入了一个重要的功能,便是本地存储,本地存储可分为4类: Local Storage:总的存储量有所限制,并不能提供真正的检索API,数据的生命期比窗口或浏览器的生命期长,数据 ...

  9. web前端实现本地存储

    当我们在提及web前端本地存储的时候,首先需要介绍一下本地化存储的概念和历史.本地化存储从来不是一个新奇的概念,因为web应用程序一直在追求的就是媲美甚至超越桌面应用程序.但是桌面应用程序一直优于we ...

随机推荐

  1. mongodb数据分组按字符串split

    db.getCollection('users').aggregate([ {$match:{ZWBH:11}}, {$unwind:'$UUID'}, {$project : { PM : { $s ...

  2. 全参考视频质量评价方法(PSNR,SSIM)以及与MOS转换模型

    转载处:http://blog.csdn.NET/leixiaohua1020/article/details/11694369 最常用的全参考视频质量评价方法有以下2种: PSNR(峰值信噪比):用 ...

  3. SQL server 导出平面文件时出错: The code page on Destination - 3_txt.Inputs[Flat File Destination Input].Columns[UserId] is 936 and is required to be 1252.

    我在导出平面文件时:Error 0xc00470d4: Data Flow Task 1: The code page on Destination - 3_txt.Inputs[Flat File ...

  4. celery任务进程关闭

    方法1: ps auxww|grep 方法2: Ctrl+C 方法3: celery multi 管理 celery multi start w1 -A proj -l info celery mul ...

  5. The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "SDSSDFCC...

    The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server ...

  6. 登录views

    import osimport hashlibfrom django.shortcuts import render,render_to_response,redirect,HttpResponseR ...

  7. Mycat实现Mysql主从读写分离

    一.概述 关于Mycat的原理网上有很多,这里不再详述,对于我来说Mycat的功能主要有如下几种: 1.Mysql主从的读写分离 2.Mysql大表分片 3.其他数据库例如Oracle,MSSQL,D ...

  8. c/c++ 标准容器 之 初始化, 赋值, swap, 比较

    c/c++ 标准容器 之 初始化, 赋值, swap, 比较 知识点 1,容器的初始化,对应代码里的test1 2,标准库array的初始化,对应代码里的test2 3,容器的赋值 ,对应代码里的te ...

  9. 利用系统函数模拟实现nginx 系统脚本启动的特殊颜色专业效果

    利用系统函数模拟实现nginx 系统脚本启动的特殊颜色专业效果/etc/init.d/nginxd {start/stop/restart/reload}利用if语句实现: ============= ...

  10. 团队作业——Alpha冲刺

    团队作业--Alpha冲刺 时间安排及内容要求 时间 内容 11.1-11.16 12次 Scrum 11.16-11.20 测试报告 与 用户反馈 11.21-11.24 展示博客 11.25 课堂 ...