cookie


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> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值