can i be notified of cookie changes in client side javascript

后端 未结 6 1143
梦毁少年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:09

    Slightly improved (shows a console.log for each changed cookie):

    var checkCookie = function() {
    
    var lastCookies = document.cookie.split( ';' ).map( function( x ) { return x.trim().split( /(=)/ ); } ).reduce( function( a, b ) { 
            a[ b[ 0 ] ] = a[ b[ 0 ] ] ? a[ b[ 0 ] ] + ', ' + b.slice( 2 ).join( '' ) :  
            b.slice( 2 ).join( '' ); return a; }, {} );
    
    
    return function() {
    
        var currentCookies =  document.cookie.split( ';' ).map( function( x ) { return x.trim().split( /(=)/ ); } ).reduce( function( a, b ) { 
            a[ b[ 0 ] ] = a[ b[ 0 ] ] ? a[ b[ 0 ] ] + ', ' + b.slice( 2 ).join( '' ) :  
            b.slice( 2 ).join( '' ); return a; }, {} );
    
    
        for(cookie in currentCookies) {
            if  ( currentCookies[cookie] != lastCookies[cookie] ) {
                console.log("--------")
                console.log(cookie+"="+lastCookies[cookie])
                console.log(cookie+"="+currentCookies[cookie])
            }
    
        }
        lastCookies = currentCookies;
    
    };
    }();
    
    window.setInterval(checkCookie, 100);
    

提交回复
热议问题