cookies_javascriptスキルの基本的なJavaScript操作例を詳しく解説

WBOY
リリース: 2016-05-16 15:29:00
オリジナル
1245 人が閲覧しました

この記事の例では、Cookie に対する JavaScript の基本的な操作について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

js が、C# や JAVA などの開発者によって、Cookie の操作などで悪名高い補助プログラミング言語とみなされているのは当然です。 js には C# のような既製のソリューションはありませんが、自分で完成させることしかできません。次に、読者のために、オブジェクト指向の考え方を使用して Cookie を処理することについての学習メモを整理します。

一般的な Cookie 操作の分析:

(1) Cookie の設定には、関数の追加と変更が含まれます。実際、元の Cookie 名がすでに存在する場合、この Cookie を追加することは、この Cookie を変更することと同じです。 Cookie を設定する場合、Cookie のライフサイクル、アクセス パス、アクセス ドメイン、セキュリティなどを参照するオプションがいくつかある場合があります。中国語の文字を Cookie に保存するには、保存された値もこのメソッドでエンコードする必要があります。

(2) Cookie の値を取得する このメソッドは、Cookie 名をパラメータとして受け取り、Cookie の値を返します。値は保存時にエンコードされているため、値が取得されるときに自動的にデコードされて返される必要があります (単に「値を取得する」のではなく、ここで返される内容を実際に設定できます)。

(3) Cookie を削除します。Cookie を削除するには、Cookie の有効期限イベントを過去の時刻に設定するだけで済みます。これにより、この Cookie (my.実装も空に設定します。これは、将来複数の Cookie を設定する場合に名前が競合する可能性を考慮するためです)。

(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"));
}

ログイン後にコピー

追加: JavaScript 操作 Cookie クラス

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. Cookie を設定します

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 プログラミングのすべての人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート