Zastanawiałem się, czy możliwe jest tworzenie plików cookie tylko na sesję za pomocą JavaScript. Po zamknięciu przeglądarki pliki cookie powinny zostać usunięte.
Nie mogę niczego używać na serwerze, ponieważ witryna jest tylko w formacie HTML ... więc nie jest używany skrypt po stronie serwera.
Przeczytałem coś na ten temat tutaj: http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/, ale nie mogę znaleźć więcej informacji na ten temat ... więc byłem zastanawiam się, czy ta metoda jest niezawodna.
javascript
html
Daan Poron
źródło
źródło
Prostszym rozwiązaniem byłoby użycie
sessionStorage
w tym przypadku:var myVariable = "Hello World"; sessionStorage['myvariable'] = myVariable; var readValue = sessionStorage['myvariable']; console.log(readValue);
Pamiętaj jednak, że
sessionStorage
zapisuje wszystko jako ciąg znaków, więc podczas pracy z tablicami / obiektami możesz używać JSON do ich przechowywania:var myVariable = {a:[1,2,3,4], b:"some text"}; sessionStorage['myvariable'] = JSON.stringify(myVariable); var readValue = JSON.parse(sessionStorage['myvariable']);
Tak więc po zamknięciu strony / karty dane zostaną utracone.
źródło
SessionStorage
zapewniaclient-only
rozwiązanie tylko bez dostępu do tych wartości po stronie serwera. W wielu frameworkach po stronie serwera, takich jak ASP.Net i PHP, chcielibyśmy mieć łatwy dostęp do wartości po stronie klienta, które mogliśmy przechowywać bez używania ukrytych pól itp., A wtedy pliki cookie stają się lepszym rozwiązaniem, ponieważ pliki cookie są automatycznie wysyłane do po stronie serwera.Aby utworzyć plik cookie tylko dla sesji za pomocą skryptu java, możesz użyć następującego. To działa dla mnie.
document.cookie = "cookiename=value; expires=0; path=/";
następnie pobierz wartość pliku cookie w następujący sposób
//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 ""; }
W porządku, aby wspierać IE, możemy zostawić „wygasa” całkowicie i możemy z tego korzystać
document.cookie = "mtracker=somevalue; path=/";
źródło
Użyj poniższego kodu dla pliku cookie sesji konfiguracji, będzie działać do zamknięcia przeglądarki. (nie zamykaj karty)
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'); }
źródło