【4858美高梅】操作总老总KIE实例代码分享,本地存款和储蓄之cookie

By admin in 4858美高梅 on 2019年4月6日

源码能够到GitHub上下载!

参见

4858美高梅 14858美高梅 2Code
function SetCookie(name, value, expires, path, domain, secure) {  var today = new Date();  today.setTime(today.getTime());  if(expires) { expires *= 86400000; }  var expires_date = new Date(today.getTime() + (expires));  document.cookie = name + “=” + escape(value)    + (expires ? “;expires=” + expires_date.toGMTString() : “”)    + (path ? “;path=” + path : “”)    + (domain ? “;domain=” + domain : “”)    + (secure ? “;secure” : “”);}

cookie在WEB更发中是常用的3个事物,我们不但在js中得以用,在php中也会用到,下边笔者来介绍一个cookie操作类,能够对cookie实行各类读取,删除操作。

JS操作cookies方法 :

cookie安慕希组(name,domain,path),它唯1明显3个cookie,三元组相同时,正是同二个cookie,不相同时,正是差别的cookie,一般的话,

function GetCookie(name) {  var cookies = document.cookie.split( ‘;’ );  var cookie = ”;
  for(var i=0; i<cookies.length; i++) {    cookie = cookies[i].split(‘=’);    if(cookie[0].replace(/^\s+|\s+$/g, ”) == name) {      return (cookie.length <= 1) ? “” : unescape(cookie[1].replace(/^\s+|\s+$/g, ”));    }  }  return null;}

对立于javascript,通过后端的php来操作cookie是更易于简单的。所以是因为原先很少通过JS去操作cookie,在选取javascript操作cookie时遭逢了1部分弯路,也享受出来,免得大家跟笔者犯同样的荒谬。

  一.cookie若不安装过期时间关闭浏览器后会自动清除数据

同一domain和path的cookie放在同一个文件中,并用*号隔绝,当然,其实并不用关爱存款和储蓄情势,分裂的浏览器存款和储蓄格局也不等同。

function DelCookie(name, path, domain) {  document.cookie = name + “=”    + (path ? “;path=” + path : “”)    + (domain ? “;domain=” + domain : “”)    + “;expires=Thu, 01-Jan-1970 00:00:01 GMT”;}

首先点,便是本人驾驭document.cookie再次回到全部cookie组成的字符串,所以在安装cookie时,小编想当然的以为是将新cookie拼接到该字符串上,再赋值给document.cookie就行了。

  二.囤积限制4k

cookie的拜会有二个同源策略,以(domain,path)来判定,不区分端口和http仍然https

透过测试,完全不是那般,document.cookie=””;
是添加或更新新的cookie,比如document.cookie=”myck=yes;”则添加了个名叫myck的cookie;假设要同时添加三个cookie,document.cookie=”key一=1;key2=贰;“
就行了。要是要抬高过期时间,存款和储蓄域等新闻,直接后边加上相关参数即可。比如:document.cookie=’myck=yes;
expires=expire_time;domain=domain’。

  三.同地方下任何文件也能读取到

domain相配:机制跟面向对象编制程序的继续很像,也正是说子domain能够访问父domain的cookie,当domain=.baidu.com时,表示全部二级域名比如www.baidu.com都足以访问该cookie

该操作完全不影响已有的非同名cookie。

    cookie用字符串拼接即可

path相称:机制跟面向对象编制程序的接二连三很像,子path能够访问父path的cookie,比如path=/test/hello/能够访问path=/test/的cookie,当path=/时,表示,全体目录子能够访问该cookie

第二点,设置cookie的晚点时间时,笔者一无可取的以为是设置个时间戳就行了,结果测来测去,发现未有效,cookie有效期总是session周期。后来才发觉要用标准字符串时间格式,类似”Mon
Jul 二3 二零一三 20:0八:拾 欧霉素T+0800
林大霉素T“。借使用134304532129九这种,则是不著见效的。

    cookie后可接

domain和path都要满意相配规则时,才会读取相应的cookie

cookie.js文件

      ; path=path

cookie读取出来后是不带domain,name属性的,即request header
:cookie中不带属性

 代码如下

      ; domain=domain

cookie写入时是带属性的,即response header: set-cookie是带属性的

复制代码

      ; secure

子domain,path与父domain,
path下最棒永不出现同名的cookie,不然不难失误,因为未有那上头的规定,区别的浏览器和服务端使用不一样的方针读

var COOKIE=(function(){

 1         /**
 2          * [setCookie 设置cookie]
 3          * @param {[String]} c_name  [起个名,独一无二的名字]
 4          * @param {[String]} c_value [需要存的值]
 5          * @param {[Number]} exdays  [时间/天数,设置保存时间  0时为删除]
 6          */
 7         function setCookie(c_name, c_value, exdays) {
 8             document.cookie = c_name + "=" + encodeURIComponent(c_value) + "; max-age=" + (exdays*60*60*24);// 解决符号转码
 9         }
10 
11         /**
12          * 读取cookies
13          * @param  {[String]} c_name [读取名字]
14          * @return {[String]}        [返回读取cookie的值]
15          */
16         function getCookie(c_name) {
17             var name = c_name + "=";
18             var ca = document.cookie.split(';');
19             for (var i = 0; i < ca.length; i++) {
20                 var c = decodeURIComponent(ca[i].trim());// 解码
21                 if (c.indexOf(name) == 0){
22                     return c.substring(name.length, c.length);
23                 }
24             }
25             return "";
26         }
27 
28         // 使用示例
29         var username = document.getElementById("username"); // 获取input username
30         var userpwd = document.getElementById("userpassword"); // 获取input userpassword
31         var remember = document.getElementById("remember"); // 获取记住账号密码
32 
33         /**
34          * 点击复选框记住 账号、密码、复选框
35          */
36         function rememberValue() {
37             if (remember.checked == true) {
38                 setCookie('user', username.value);// 临时
39                 setCookie('pwd', userpwd.value, 30);
40                 setCookie('remember', remember.checked, 30);
41             } else {
42                 setCookie("user","",0);
43                 setCookie("pwd","",0);
44                 setCookie("remember","",0);
45             }
46         }
47 
48         /**
49          * 页面加载完毕后从cookie里读取值并填入相应的标签内
50          */
51         window.onload = function () {
52             username.value = getCookie("user");
53             userpwd.value = getCookie("pwd");
54             remember.checked = getCookie("remember");
55         }

含值键值对的cookie:之前一直用的是nam=value单键值对的cookie,一聊起含多少个子键值对的就蒙了。以往到底弄驾驭了。

var getDateString=function(offset){

 

含多个子键值对的cookie格式是name=key一=value一&key二=value二。能够领略为单键值对的值保存多少个自定义的多键值字符串,

var date=new Date();

个中的键值对私分符为&,当然能够自定义二个分隔符,但用asp.net获取时是以&为分割符。

date.setTime(+date+offset*1000);

return date.toGMTString();

},

getCookies=function(){

var cookie=document.cookie||”,

subs=cookie.split(/;s?/),

_【4858美高梅】操作总老总KIE实例代码分享,本地存款和储蓄之cookie。subs,cks={};

for(var i=0;i<subs.length,subs[i];i++){

_subs=subs[i].split(‘=’)

cks[unescape(_subs[0]4858美高梅,)]=unescape(_subs.slice(1).join(‘=’));

}

return cks;

}

 

return {

refresh:function(){

this.cookies=getCookies();

return this;

},

has:function(key){

return this.cookies[key]!=null;

},

get:function(key){

return this.cookies[key];

},

set:function(key,value,expire,path,domain,secure){

var myck=escape(key)+’=’+escape(value==null?”:value);

if(!isNaN(expire=parseFloat(expire)))

myck+=’;expires=’+getDateString(expire);

if(path)myck+=’;path=’+path;

if(domain&&domain!=location.hostname)myck+=’;domain=’+domain;

if(secure)myck+=’;secure’;

document.cookie=myck;

return this.refresh().has(key);

},

remove:function(key,path,domain){

var paths=[],

domains=[],

arr,self=this;

if(path){

paths=[path];

}else{

arr=location.pathname.match(/.*?/|.+$/g);

this.each(arr,function(i){

var a;

paths.push(a=arr.slice(0,i+1).join(”));

if(/[^/]+/$/.test(a)){

paths.push(a.slice(0,-1));

}

if(/[^/]$/.test(a)){

paths.push(a+’/’);

}

});

}

 

if(domain){

domains=[domain];

}else{

arr=location.hostname.split(‘.’);

this.each(arr,function(i){

domains.push(arr.slice(-i).join(‘.’));

});

domains.push(‘.’+domains[0]);

}

 

this.each(paths,function(){

var path=this+”;

self.each(domains,function(){

self.set(key,”,-1000,path,this+”);

});

});

 

return !!path||!!domain||!this.has(key);

},

clear:function(path,domain){

for(var key in this.cookies){

this.remove(key,path,domain);

}

return !!path||!!domain||function(){

for(var key in this.cookies){

return false;

}

return true;

}.call(this);

},

each:function(arr,func){

var i=0,j=arr.length;

for(;i<j;i++){

if(func.call(arr[i],i)===false){

break;

}

}

}

}.refresh();

})();

// 首先在页面中引进首席执行官KIE.js

 代码如下

复制代码

//调用
老总KIE.has(name); //检查评定是或不是闻名字为name的cookie
CEOKIE.set(key,value,expire,path,domain);
//设置三个新cookie,true表示设置成功,false表示设置失败
总老总KIE.remove(name,path,domain);
//删除名称为name的cookie,true表示删除成功,false表示删除战败
首席营业官KIE.get(name); //获取名字为name的cookie的值
主管KIE.clear(path,domain); //清除全部cookie

//注意:remove和clear方法,如若不安装path或domain,将会删除全体根域、子域、种种深度路径下的cookie。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有