• 离线检测

检测是否离线,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. 解决Chrome与jQuery菜单兼容问题

    题外,Chrome最近在耗电量方面超过了Edge,不过内存占用还是高啊,开发时偶尔用用.这不,http://jqueryui.com/menu/的官方菜单都支持的不好,改改吧! 打开jquery-ui ...

  2. 云ERP真的靠谱吗?

    现在几乎每个IT系统或项目都要跟云挂上钩,跟数码产品必与“智能”扯上关系一样,否则在外行甚至同行眼里就是“矮小搓”.ERP领域也悄然刮起了云端化.国内ERP产品也借此机会想弯道超车,通过云化来抢夺被S ...

  3. java实现小学生四则运算

    GitHub地址:https://github.com/TaoTaoLv1/arithmetic 结对伙伴:叶文涛 项目要求: 实现一个自动生成小学四则运算题目的命令行程序. 使用 -n 参数控制生成 ...

  4. 使用Visual Studio Team Services敏捷规划和项目组合管理(一)——使用团队、区域和迭代

    使用Visual Studio Team Services敏捷规划和项目组合管理(一)--使用团队.区域和迭代 概述 在本实验,你将会了解Visual Studio Team Services提供的敏 ...

  5. Failed to decrypt protected XML node "DTS:Password" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when t

    Question SSIS包从A服务器搬迁到B服务器,运行报错 Description: Failed to decrypt protected XML node "DTS:Password ...

  6. js强制不使用“兼容性视图”

    在IE8浏览器以后版本,都有一个“兼容性视图”,让不少新技术无法使用.那么如何禁止浏览器自动选择“兼容性视图”,强制IE以最高级别的可用模式显示内容呢?下面就介绍一段HTML代码. X-UA-Comp ...

  7. 自动化测试基础篇--Selenium判断元素是够存在

    摘自https://www.cnblogs.com/sanzangTst/p/8376101.html selenium+python处于学习阶段,功能实现之后开始整理之前写的代码,突然发现一个功能没 ...

  8. 我在 Mac 上都用什么

    我在 Mac 上都用什么 Homebrew Homebrew 是统一管理 macOS 中应用的最佳方法之一,而且大量优秀的应用都可以在 Homebrew 中找到. 就不做过多介绍了, 有兴趣可以看相关 ...

  9. 利用Audacity软件分析ctf音频隐写

    分析音频得到摩斯电码 看波的宽度分辨长短音 比较细的就是短音,代表"." 比较粗的就是长音,代表"-" 中间的间隔就是" " 得到摩斯电码

  10. Elixir 单元测试

    概述 elixir 中自带了单元测试框架 ExUnit ,其中提供单元测试的一系列,主要包含以下模块: ExUnit: 单元测试框架 ExUnit.Assertions: 断言 ExUnit.Case ...