0

ユーザーが Web サイトにアクセスしたときに 1 回限りのアラートを受け取り、Cookie を配置して、サイトに戻るたびに迷惑をかけないようにしようとしています。Cookie が保存され、アラートが実行されますが、実行が継続され、髪が引き裂かれます。

私は Web で見つけた多くのことを試しました (StackExchange、私はあなたが大好きです) が、どれもうまくいかないようです。現在の状態は次のとおりです。

<script>
    function setCookie(name, value, days)
    {
      if (days)
      {
        var date = new Date();
        date.setTime(date.getTime()+days*24*60*60*1000);
        var expires = "; expires=" + date.toGMTString();
      }
      else
        var expires = "";
      document.cookie = name+"=" + value+expires + ";path=/";
    }
</script>

<body>
    <script type="text/javascript">
        if(!setCookie('testcookie')) {
           alert("hello world");
           setCookie('testcookie','1',3);
        }
    </script>
</body>

クッキーの記録を見ると、毎回設定しているようです。スクリプトで有効期限を変更すると、開発コンソールで毎回変更されます。それが問題を示しているかどうかはわかりません。

=====エンドソリューション======

getCookie 呼び出しがありませんでした。また、それをヘッダー スクリプトに追加しようとすると、実行は独自の関数 * facepalm * である必要があることにも気付きました。また、すべてのスクリプトをヘッダーに追加し、代わりに body タグで関数を呼び出しました。

<head>
    <script>
        function setCookie(name, value, days) {
            if (days) {
                var date = new Date();
                date.setTime(date.getTime()+days*24*60*60*1000);
                var expires = "; expires=" + date.toGMTString();
            }   
            else 
                var expires = "";
                document.cookie = name+"=" + value+expires + ";path=/";
        }

        var getCookie = function (c_name) {
            var i, x, y, ARRcookies = document.cookie.split(";");
            for (i = 0; i < ARRcookies.length; i++) {
                x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
                y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
                x = x.replace(/^\s+|\s+$/g, "");
                if (x == c_name) {
                    return unescape(y);
                }
            }
        };

        function checkCookie() {
            if(!getCookie('testcookie2')) {
                alert("hello world");
                setCookie('testcookie2','1',3);
            }
        }
    </script>
</head>
<body onload="checkCookie()">
</body>

タダ!

4

1 に答える 1

0

私は時々小さなjavascript関数を使ってクッキーを取得します

var getCookie = function (c_name) {
    var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x == c_name) {
            return unescape(y);
        }
    }
};

これを他のロジックと組み合わせて使用​​できます

if(!getCookie('testcookie')) {
    alert("hello world");
    setCookie('testcookie','1',3);
}
于 2013-03-15T00:12:40.330 に答える