Session only cookies with Javascript

后端 未结 4 1416
感动是毒
感动是毒 2020-11-28 07:48

I was wondering if it\'s possible to create session only cookies with Javascript. When the browser is closed the cookies should be removed.

I can\'t use anything on

相关标签:
4条回答
  • 2020-11-28 08:11

    Yes, that is correct.

    Not putting an expires part in will create a session cookie, whether it is created in JavaScript or on the server.

    See https://stackoverflow.com/a/532660/1901857

    0 讨论(0)
  • 2020-11-28 08:18

    A simpler solution would be to use sessionStorage, in this case:

    var myVariable = "Hello World";
    
    sessionStorage['myvariable'] = myVariable;
    
    var readValue = sessionStorage['myvariable'];
    console.log(readValue);
    

    However, keep in mind that sessionStorage saves everything as a string, so when working with arrays / objects, you can use JSON to store them:

    var myVariable = {a:[1,2,3,4], b:"some text"};
    
    sessionStorage['myvariable'] = JSON.stringify(myVariable);
    var readValue = JSON.parse(sessionStorage['myvariable']);
    

    A page session lasts for as long as the browser is open and survives over page reloads and restores. Opening a page in a new tab or window will cause a new session to be initiated.

    So, when you close the page / tab, the data is lost.

    0 讨论(0)
  • 2020-11-28 08:22

    For creating session only cookie with java script, you can use the following. This works for me.

    document.cookie = "cookiename=value; expires=0; path=/";
    

    then get cookie value as following

     //get cookie 
    var cookiename = getCookie("cookiename");
    if (cookiename == "value") {
        //write your script
    }
    
    //function getCookie        
    function getCookie(cname) {
        var name = cname + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1);
            if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
        }
        return "";
    }
    

    Okay to support IE we can leave "expires" completely and can use this

    document.cookie = "mtracker=somevalue; path=/";
    
    0 讨论(0)
  • 2020-11-28 08:27

    Use the below code for a setup session cookie, it will work until browser close. (make sure not close tab)

    function setCookie(cname, cvalue, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays*24*60*60*1000));
        var expires = "expires="+ d.toUTCString();
        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
      }
      function getCookie(cname) {
        var name = cname + "=";
        var decodedCookie = decodeURIComponent(document.cookie);
        var ca = decodedCookie.split(';');
        for(var i = 0; i <ca.length; i++) {
          var c = ca[i];
          while (c.charAt(0) == ' ') {
            c = c.substring(1);
          }
          if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
          }
        }
        return false;
      }
      
      
      if(getCookie("KoiMilGaya")) {
        //alert('found'); 
        // Cookie found. Display any text like repeat user. // reload, other page visit, close tab and open again.. 
      } else {
        //alert('nothing');
        // Display popup or anthing here. it shows on first visit only.  
        // this will load again when user closer browser and open again. 
        setCookie('KoiMilGaya','1');
      }
    
    0 讨论(0)
提交回复
热议问题