can i be notified of cookie changes in client side javascript

后端 未结 6 1141
梦毁少年i
梦毁少年i 2020-12-03 01:21

Can I somehow follow changes to cookies (for my domain) in my client side javascript. For example a function that gets called if a cookie gets changed , deleted or added

6条回答
  •  悲哀的现实
    2020-12-03 02:12

    I think my way is better. I wrote a custom event for detect when cookie is chanced:

    const cookieEvent = new CustomEvent("cookieChanged", {
      bubbles: true,
      detail: {
        cookieValue: document.cookie,
        checkChange: () => {
          if (cookieEvent.detail.cookieValue != document.cookie) {
            cookieEvent.detail.cookieValue = document.cookie;
            return 1;
          } else {
            return 0;
          }
        },
        listenCheckChange: () => {
          setInterval(function () {
            if (cookieEvent.detail.checkChange() == 1) {
              cookieEvent.detail.changed = true;
              //fire the event
              cookieEvent.target.dispatchEvent(cookieEvent);
            } else {
              cookieEvent.detail.changed = false;
            }
          }, 1000);
        },
        changed: false
      }
    });
    
    /*FIRE cookieEvent EVENT WHEN THE PAGE IS LOADED TO
     CHECK IF USER CHANGED THE COOKIE VALUE */
    
    document.addEventListener("DOMContentLoaded", function (e) {
      e.target.dispatchEvent(cookieEvent);
    });
    
    document.addEventListener("cookieChanged", function (e) {
      e.detail.listenCheckChange();
      if(e.detail.changed === true ){
        /*YOUR CODE HERE FOR DO SOMETHING 
          WHEN USER CHANGED THE COOKIE VALUE */
      }
    });
    

提交回复
热议问题