1,web存储
使用HTML5可以在本地存储用户的浏览数据
用户以前在某个网站登录过,曾经用cookie记录历史登录,但是由于cookie不能大量存储数据,目前使用localstorage和sessionstorage存储浏览器端数据
localstorage不受时间限制,sessionstorage关闭网页就消失了。
localStorage sessionStorage的用法相同
注:function clear() { locastorage.clear(); } 是错误的,应避免使自定义函数名与内置函数名相同。
1、存储变量
sessionStorage.setItem('key','value'); //key-是要存储的变量名,value-是变量的值
localStorage.setItem('key','item');
2、获取变量的值
sessionStorage.getItem('key'); //key-是存储的变量名
localStorage.getItem('key');
3、删除指定变量
sessionStorage.removeItem('key');
localStorage.removeItem('key');
4、删除本地存储的所有信息
sessionStorage.clear();
localStorage.clear();
5、获取当前存储的键值对数量
localStorage.length;
sessionStorage.length;
2,web worker
1,JavaScript
采用单线程进行执行的,在同一时间只能做一件事,HTML5提出了web Worker标准,表示JavaScript
允许有多个线程,但是子线程完全受主线程的控制,切子线程不能操作DOM,只有主线程可以操作DOM。
Web Worker
的基本原理:在当前的主线程中加载一个只读文件来创建一个新的线程,两个线程同时存在,且互不阻塞,并且在子线程与主线程之间提供了数据交换的接口postMessage
和onmessage
。来进行发送数据和接收数据。其数据格式可以为结构化数据(JSON
等);创建新worker的脚本叫做主线程,而被创建的新的worker叫做子线程。
var worker = new Worker("worker.js");
worker.postMessage("text");
worker.onmessage = function (e) { var message = e.data; };
worker.onerror = function(e){ console.log("error at "+e.filename ":" + e.lineno + e.message) } //异常处理
worker.terminate(); //结束worker
注意:
1,分配给 Worker 线程运行的脚本文件,必须与主线程的脚本文件同源。
2,Worker 无法使用document
、window
、parent
这些对象。但是可以使用navigator
对象和location
对象。
3,Worker 线程不能执行alert()
方法和confirm()
方法,但可以使用 XMLHttpRequest 对象发出 AJAX 请求。
4,Worker 线程无法读取本地文件,即不能打开本机的文件系统(file://
),它所加载的脚本,必须来自网络。