javascript-ウェブサイトの特定のページから移動するときにCookieを削除します
私はe-shopphpWebサイトに取り組んでいます。カートテンプレートページで、ユーザーがこの特定のページで行う特定の選択を保存したいので、javascriptcookieを定義しました。コードは
jQuery(document).ready(function($) {
$("input[name=\"license-selector\"]").click(function(){ // when license-selector radio button is being clicked
var thisElem = $(this); // value is being written to variable value
var value = thisElem.val();
//localStorage:
sessionStorage.setItem("option", value); // value stored in localstorage
//Cookies:
document.cookie="option="+value; // value stored in cookie
});
//localStorage:
var itemValue = sessionStorage.getItem("option"); // value is being loaded into variable itemValue
//Cookies:
var n = document.cookie;
if (n.indexOf("option=") !== -1) {
var cookieValue = n.substring(n.indexOf("option=")+7, n.indexOf(";")) // value is being loaded into variable cookieValue
if (cookieValue == "su") {single_user()};
if (cookieValue == "mu") {multi_user()};
}
});
つまり、Cookieはクリックされているラジオボタンの値を取得します。ここまでは順調ですね。スクリプトは、このカートページにのみ適用される外部スクリプトファイルから呼び出されます。
今、私がやろうとしているのは、ユーザーがこのカートページから離れるたびに(Webサイトからではなく、ユーザーが同じWebサイトの製品やホームページなどにアクセスすることを決定したときはいつでも)このCookieを削除することです。取り組んでいます)。 Cookieを削除し、訪問者がカートページに再度アクセスしたときに再度選択してもらいたいと思います。要約すると:...カートページにあり、選択を行い、Cookieが保存されます...次に、たとえばショップページ(またはWebサイトの他のページ)にアクセスすると、Cookieが削除され、再度アクセスするとカートページ(同じセッション)では、同じ選択を再度行う必要があります(したがって、Cookieを再度設定します)。
Cookieを削除するために、このスクリプトをWebサイトのヘッダーに一時的に挿入しました(headタグを閉じる前)。
// Delete cookie
// store url on load
var currentPage = window.location.href;
var cookiePage = 'http://localhost/my-site/cart/';
// listen for changes
setInterval(function()
{
console.log(currentPage);
if (currentPage != cookiePage)
{
document.cookie = "option=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
var cookieValue = 0;
}
}, 500);
このスクリプトは、現在のURLをチェックして、カートページのURLと一致するかどうかを確認しようとしています。このチェックは0.5秒ごとに実行されます。ユーザーがカートページにいない場合、スクリプトは理論的にCookieを削除する必要があります...
あなたが正しく推測したように...それは機能しません....それを機能させるためのどんな助けも大いに感謝されます。目標は、訪問者がカートページを離れたときにCookieを削除することです。ところで、onbeforeunloadの解決策があり、Cookieを空にする関数を呼び出すことは知っていますが、この解決策は必要ありません。 onbeforeunloadを使用すると、カートページの[カートを更新]ボタンをクリックするたびにCookieが削除されますが、これは望ましくありません([カートを更新]をクリックすると、カートページはajaxを介して更新されます)。
ありがとうございます!!
答え :
解決策:
気にしないでください...100万回の試行錯誤の末になんとか成功しました。メニュー項目をクリックすると、Cookieの削除機能をバインドすることにしました。結局のところ、それはとても単純でした:(。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。