ユーザーが 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>
タダ!