2017-04-07 10 views
0

私はe-shopのPHPウェブサイトで作業しています。私のカートのテンプレートページでは、ユーザーがこの特定のページで行う特定の選択肢を保存したいので、javascriptのクッキーを定義しました。コードはウェブサイトの特定のページからナビゲートするときにクッキーを削除する

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

です。したがって、クッキーはクリックされているラジオボタンの値を取得します。ここまでは順調ですね。スクリプトは、このカートページに対してのみ適用される外部スクリプトファイルから呼び出されます。

私がしようとしているのは、ユーザーがこのカートページ(ウェブサイトではなく、ユーザーが同じウェブサイト私は取り組んでいる)。私はそのクッキーを削除して、買い物客がカートページに再度訪れたときに再びその選択肢を作ってもらいたい。要約:...カートページにあり、選択を行い、クッキーが保存されています...たとえばショップページ(またはウェブサイトの他のページ)にアクセスし、クッキーが削除され、カートのページ(同じセッション)、彼らは再び同じ選択をする必要があります(したがって、再びクッキーを設定する)。

クッキーを削除するには、私のウェブサイトのヘッダーにこのスクリプトを一時的に挿入しました(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秒ごとに行われます。ユーザーがカートページにない場合、スクリプトは理論的にクッキーを削除する必要があります。

正しく推測すると...動作しません。感謝。目標は、訪問者がカートページを離れるときにクッキーを削除することです。 Btw、私はonbeforeunloadの解決策があり、クッキーを空にする関数を呼び出すことを知っていますが、私はこの解決策を望んでいません。 onbeforeunloadを使用すると、カートページの「カートを更新」ボタンをクリックするたびにクッキーが削除され、「カートを更新」をクリックすると、カートのページがajax経由で更新されます。

ありがとうございました!

答えて

0

私は100万回の試行錯誤の後に管理しました。メニュー項目をクリックすると、クッキー削除機能をバインドすることに決めました。結局結構シンプルだった。(

関連する問題