0

W3Schools ( http://www.w3schools.com/js/js_cookies.asp )から getCookie と setCookie をコピーして使用しました。get と set のコードは次のとおりです。

  function setCookie(c_name,value,exdays)
  {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
  }

  function getCookie(c_name)
  {
    var c_value = document.cookie;
    var c_start = c_value.indexOf(" " + c_name + "=");
    if (c_start == -1)
    {
      c_start = c_value.indexOf(c_name + "=");
    }
    if (c_start == -1)
    {
      c_value = null;
    }
    else
    {
      c_start = c_value.indexOf("=", c_start) + 1;
      var c_end = c_value.indexOf(";", c_start);
   if (c_end == -1)
   {
      c_end = c_value.length;
   }
      c_value = unescape(c_value.substring(c_start,c_end));
   }
      return c_value;
 }

prepareDrive.html ページに Cookie を設定します。

 setCookie("pathName",path,365);
 setCookie("formatName",ifFormat,365);

次に、別の HTML ページである startInstall.html ページで get cookie を呼び出しました。

 var path = getCookie("pathName");
 var ifFormat = getCookie("formatName");

ただし、path と ifFormat の両方が null です。ただし、prepareDrive.html で console.log を実行すると、データが存在します。ありがとう !!!JS で Cookie を使用するのはこれが初めてです。localstorage を使用してデータを保存したくありません。一部の古いバージョンのブラウザーではこの機能がサポートされていないためですよね?

4

2 に答える 2

3

pathCookieの共通を指定する必要があります。最も簡単なのは、ドメイン ルートを指定することです。

var c_value=escape(value) + "; path=/" + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());

それがないと、現在のdocument.cookieデフォルトにlocation.pathnameなり、Cookie は現在のページでのみ使用できるようになります。

;path=パス(例: '/'、'/mydir') 指定しない場合、現在のドキュメントの場所の現在のパスがデフォルトになります。


また、 MDN で Cookieの「小さなフレームワーク」を確認することをお勧めします。

于 2013-07-23T17:54:33.257 に答える
0

すでに jquery を使用している場合は、jquery プラグインを検討することをお勧めします。

https://github.com/jquery/plugins.jquery.com

それはそれをかなり簡単にします。

于 2013-07-23T18:59:24.053 に答える