>웹 프론트엔드 >JS 튜토리얼 >cookie_javascript 스킬에 대한 기본 자바스크립트 동작 예시에 대한 자세한 설명

cookie_javascript 스킬에 대한 기본 자바스크립트 동작 예시에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:29:001296검색

이 기사의 예에서는 쿠키에 대한 JavaScript의 기본 작업을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

예를 들어 C#, JAVA 등 개발자들이 쿠키 운영과 관련하여 js를 악명 높은 보조 프로그래밍 언어로 간주하는 것은 당연합니다. Node.js에는 C#과 유사한 기성 솔루션이 없지만 직접 완료해야 합니다. 다음으로, 독자의 이익을 위해 객체지향적 사고를 활용하여 쿠키를 처리하는 방법에 대한 연구 노트를 정리하겠습니다.

일반적인 쿠키 작업 분석:

(1) 쿠키 설정에는 기능 추가 및 수정이 포함됩니다. 실제로 원래 쿠키 이름이 이미 존재하는 경우 이 쿠키를 추가하는 것은 이 쿠키를 수정하는 것과 같습니다. 쿠키 설정 시 쿠키의 수명주기, 접속경로, 접속도메인, 보안 등에 관한 몇 가지 옵션이 있을 수 있습니다. 쿠키에 한자를 저장하려면 저장된 값도 이 방법으로 인코딩해야 합니다.

(2) 쿠키 값을 가져옵니다. 이 메서드는 쿠키 이름을 매개변수로 받고 쿠키 값을 반환합니다. 값은 저장할 때 인코딩되었기 때문에 값을 검색할 때 자동으로 디코딩되어 반환되어야 합니다(단순히 "값 가져오기" 대신 여기에서 반환되는 내용을 실제로 설정할 수 있습니다).

(3) 쿠키 삭제 쿠키를 삭제하려면 쿠키의 만료 이벤트를 과거 시간으로 설정하기만 하면 쿠키 이름을 매개변수로 받아 이 쿠키를 삭제할 수 있습니다. 구현 또한 비어 있도록 설정합니다. 이는 향후 여러 쿠키를 설정할 때 이름 충돌 가능성을 고려하기 위한 것입니다.

(4) 기타 (다른 작업은 독자들이 직접 고려해 볼 수 있으므로 자세한 내용은 다루지 않겠습니다.)

알겠습니다. 제가 다시 말하려는 내용을 짐작하셨을 것입니다. 그렇죠. 코드가 저렴합니다.

/* 对cookie的操作 */
//创建
var Cookie = new Object();
//设置(修改)属性和方法
Cookie.setCookie = function(sName, sValue, oExpires, sPath, sDomain, bSecure) {
  var sCookie = sName + "=" + escape(sValue); // 名称和值
  if (oExpires) {
    sCookie += "; expires=" + oExpires.toGMTString(); // 过期时间
  }
  if (sPath) {
    sCookie += "; path=" + sPath; // 访问路径
  }
  if (sDomain) {
    sCookie += "; domain=" + sDomain; // 访问路径
  }
  if (bSecure) {
    sCookie += "; true"; // 安全性
  }
  document.cookie = sCookie;
}
//获取
Cookie.getCookie = function(sName) {
  var cookieArray = document.cookie.split(";"); //得到分割的名值对
  var tempCookie = new Object();
  for (var i = 0; i < cookieArray.length; i++) {
    var tempArr = cookieArray[i].split("="); //将名称和值分开
    if (tempArr[0] == sName) { //如果是指定的cookie,返回它的值
      return unescape(tempArr[1]);
    }
  }
  return "There's no such a cookie name!";
}
//删除
Cookie.deleteCookie = function(sName, sPath, sDomain) {
  var sCookie = sName + "=; expires=" + (new Date(0)).toGMTString(); // 设置名称为空,过期时间为0,也可以设置过期时间为负数 (var sCookie = sName + "=; expires=-1"; )
  if (sPath) {
    sCookie += "; path=" + sPath;
  }
  if (sDomain) {
    sCookie += "; domain=" + sDomain;
  }
  document.cookie = sCookie;
}
function test() {
  Cookie.setCookie("test", "cookieTest");
  alert(Cookie.getCookie("test"));
  alert(Cookie.getCookie("test2")); // &#63;&#63;&#63;
  Cookie.deleteCookie("test");
  alert(Cookie.getCookie("test"));
}

추가: 자바스크립트 연산 쿠키 클래스

String.prototype.Trim = function()
{
  return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}
function JSCookie()
{
  this.GetCookie = function(key)
  {
    var cookie = document.cookie;
    var cookieArray = cookie.split(';');
    var getvalue = "";
    for(var i = 0;i<cookieArray.length;i++)
    {
      if(cookieArray[i].Trim().substr(0,key.length) == key)
      {
        getvalue = cookieArray[i].Trim().substr(key.length + 1);
        break;
      }
    }
    return getvalue;
  };
  this.GetChild = function(cookiekey,childkey)
  {
    var child = this.GetCookie(cookiekey);
    var childs = child.split('&');
    var getvalue = "";
    for(var i = 0;i < childs.length;i++)
    {
      if(childs[i].Trim().substr(0,childkey.length) == childkey)
      {
        getvalue = childs[i].Trim().substr(childkey.length + 1);
        break;
      }
    }
    return getvalue;
  };
  this.SetCookie = function(key,value,expire,domain,path)
  {
    var cookie = "";
    if(key != null && value != null)
      cookie += key + "=" + value + ";";
    if(expire != null)
      cookie += "expires=" + expire.toGMTString() + ";";
    if(domain != null)
      cookie += "domain=" + domain + ";";
    if(path != null)
      cookie += "path=" + path + ";";
    document.cookie = cookie;
  };
  this.Expire = function(key)
  {
    expire_time = new Date();
    expire_time.setFullYear(expire_time.getFullYear() - 1);
    var cookie = " " + key + "=e;expires=" + expire_time + ";"
    document.cookie = cookie;
  }
}

사용법:

1. 쿠키 설정

var cookie = new JSCookie();
//普通设置
cookie .SetCookie("key1","val1");
//过期时间为一年
var expire_time = new Date();
expire_time.setFullYear(expire_time.getFullYear() + 1);
cookie .SetCookie("key2","val2",expire_time);
//设置域及路径,带过期时间
cookie .SetCookie("key3","val3",expire_time,".cnblogs.com","/");
//设置带子键的cookie,子键分别是k1,k2,k3
cookie .SetCookie("key4","k1=1&k2=2&k3=3");

2. 쿠키 읽기

//简单获取
cookie .GetCookie("key1");
cookie .GetCookie("key2");
cookie .GetCookie("key3");
cookie .GetCookie("key4");
//获取key4的子键k1值
cookie .GetChild("key4","k1");

3. 삭제

cookie .Expire("key1");
cookie .Expire("key2");
cookie .Expire("key3");
cookie .Expire("key4");

이 기사가 JavaScript 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.