1.数据持久化操作1--cookie
描述:数据持久化也叫数据本地化,是一种将数据"长久"的保存在客户端的技术操作。
作用:由于cookie是存储在客户端本地的,因此可以作为一些必要信息的存储容器
例如:一个网站的登录信息(可能不会存储用户名和密码,有泄露信息的风险)
以便下次打开该网站的时候,不必重复执行登录操作。
语法:cookie的设置方案有两种:
前端设置cookie
写入cookie:document.cookie = 'key=value;expires=过期时间戳';
读取cookie:console.log(document.cookie);
删除cookie:document.cookie = 'key=value;expires=当前时间戳+1';
后端设置cookie
1.数据持久化操作2--localStorage、sessionStorage
描述:html5中提供的数据持久化操作。
区别:
localStorage中存储的数据,只要不被用户主动删除就会永远保存。
sessionStorage中存储的数据,只要用户不关闭页面就会一直存在,直到关闭为止。
说明:
对于两者而言获取不存在的key值,返回null!
语法:
xxx.setItem('key','value');
xxx.getItem('key');
xxx.removeItem('key');
1.webWorker
描述:一种能够在“后台”处理执行js脚本的html5技巧
能够使得脚本的运行变的悄无声息,而且不会影响页面的运作
类似于【异步】的概念
并不是真的在php后台处理脚本。
语法:
(1)在页面中的部分
//创建一个【webWorker】,并告诉他需要后台执行的文件名
var worker = new Worker('想要悄无声息执行的js文件路径');
//当后台执行的文件发出通知的时候,自动执行的回调函数。
worker.onmessage = function (eve){
console.log(eve.data);
};
(2)在js文件中的部分
在js文件中任何位置,都可以通过
postMessage(回传信息);
来通知页面中的【webWorker】,这个悄无声息的任务已经执行完毕。
1.获取设备getUserMedia
描述:html5为了能够更容易的获取用户的设备,以便提供信息采集
在navigator对象中提供了一个叫做getUserMedia的方法
本方法用来获取用户的多媒体设备
说明:获取设备一般和canvas标签配合使用,以便达到“实时采集”的目的。
语法:
(1)做兼容性:
navigator.getUserMedia = nagigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia;
(2)获取设备:
navigatior.getUserMieda({获取设备类型JSON格式}, func获取多媒体流文件,func错误回调);
<!DOCTYPE html>
<html lang="en"><head>
<meta charset="UTF-8">
<title>Document</title>
<style>
#myvideo{
width:250px;
height:200px;
border: 1px solid #000;
}
</style>
</head>
<body>
<video src="" id="myvideo"></video>
<canvas id ="mycanvas"></canvas>
<img src=''>
<button id ="openVideo">视频</button>
<button id ="snapshot">截图</button>
<!-- <button>点我加cookie</button> -->
<!-- <button>点我之后开始悄无声息的执行js</button> -->
<!-- <video id='myvideo' src=''></video>
<button class="playVideo">开启视频</button>
-->
</body>
<script>
var expires = new Date(new Date().getTime()+1000*1000).toGMTString();var tempValue = escape('张先生');
document.cookie = 'username='+tempValue+';expires='+expires;
document.cookie = 'username=frank;expires='+expires;
console.log(document.cookie);
var cookie = document.cookie;
var obj = {};
var arr = cookie.split('=');
obj[arr[0]] = arr[1];
console.log(unescape(obj.username));
document.querySelector('button').onclick = function(){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState ==4){
if(xhr.status == 200){
console.log(xhr.responseText);
}
}
};
xhr.open('get','cookie.php',true);
xhr.send();
}
console.log(document.cookie);
function getCookie(key){
var cookie = document.cookie;
if(cookie){
var obj ={};
var arr = cookie.split(';');
for(var i=0;i<arr.length;i++){
var temArr =arr[i].split('=');
obj[tempArr[0]] = temArr[1];
}
return obj[key];
}else{
return'';
}
}
var value = unescape(getCookie('username'));
console.log(value);
var frankInfo ={
fname:'frank',
fage:'18',
fgender:'male',
};
var jsonStr = JSON. stringify(frankInfo);
function getCookie(key){
var cookie = document.cookie;
if(cookie){
var obj = {};
var arr = cookie.split(';');
for(var i=0; i<arr.length; i++){
var tempArr = arr[i].split('=');
obj[tempArr[0]] = tempArr[1];
}
console.log(obj);
return obj[key];
}else{
return '';
}
}
var frankInfo = getCookie(' frankInfo');
// console.log(JSON.parse(frankInfo));
document.querySelector('button').onclick = function (){
添加
localStorage.setItem('username','frank');
localStorage.setItem('password','123456');
读取
console.log(localStorage.getItem('username1'));
删除
localStorage.removeItem('password');
sessionStorage.setItem('username','frank');
sessionStorage.setItem('password','123546');
webworker
var num = 1;
setInterval(function(){
console.log(num++);
},1000);
document.querySelector('button').onclick = function(){
var worker = new Worker('cookie.js');
worker.onmessage = function(eve){
console.log(eve.data);
}
};
document.querySelector('button').onclick = function(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(doSthFunc,errFunc);
}else{
alert('您的浏览器不支持')
}
}
//window.close();
}
//(2)对获取定位方法提供【成功回调】【失败回调】
function doSthFunc(position){
alert(position);
console.log(position.coords.latitude, position.coords.longitude);
}
function errFunc(error){
switch(error.code){
case error.PERMISSION_DENIED:
alert("User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
alert("Location information is unavailable.");
break;
case error.TIMEOUT:
alert("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
alert("An unknown error occurred.");
break;
}
}
};
1.物理定位geoLocation
描述:html5为了对设备提供更好的实时位置服务,开放了coordinate定位
用户可以通过navigator.geolocation来使用他们
注意:因为定位服务涉及到用户的隐私,
因此必须在设置了https的服务器上才能正确加载
语法:
//(1)询问用户设备,当前是否支持定位
if(navigator.geolocation){
//使用getCurrentPosition()获取用户当前位置
navigator.geolocation.getCurrentPosition(doSthFunc, errFunc);
}else{
//提示用户不支持定位
alert('您的浏览器不支持定位功能!');
//window.close();
}
//(2)对获取定位方法提供【成功回调】【失败回调】
function doSthFunc(){
alert(position);
console.log(position.coords.latitude, position.coords.longitude);
}
function errFunc(){
switch(error.code){
case error.PERMISSION_DENIED:
alert("User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
alert("Location information is unavailable.");
break;
case error.TIMEOUT:
alert("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
alert("An unknown error occurred.");
break;
}
}
var video = document.querySelector('#myvideo');
document.querySelector('.playVideo').onclick = function (){
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
navigator.getUserMedia({
video:true,
audio:true
}, function (stream){
//让设备采集到的信息,实时加载到video标签中
var URL = window.URL || window.webkitURL;
video.src = URL.createObjectURL(stream);
//让视频播放
video.play();
}, function(error){
console.log(error);
});
}
var video = document.getElementById('myvideo');
var canvas = document.querySelector('#mycanvas');
var bicaso = canvas.getContext('2d');
// var img = document.querySelector('img');
var mediaStream = null;
document.getElementById('openVideo').onclick = function (){
// 做兼容
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
// 调用方法
navigator.getUserMedia({
//调用的设备类型
video:true,
audio:true
},function(stream){
// 把视频流转成地址
var URL = window.URL || window.webkitURL;
video.src = URL.createObjectURL(stream);
//console.log(video.src)
video.play();
//
mediaStream = stream;
},function(error){
console.log(error);
});
};
document.querySelector('#snapshot').onclick = function (){
if (mediaStream) {
bicaso.drawImage(video, 0, 0, 250, 200);
document.querySelector('img').src = canvas.toDataURL('image/webp');
//
}
};
</script>
</body>
</html>