Me preguntaba si es posible crear cookies de sesión solo con Javascript. Cuando se cierra el navegador, las cookies deben eliminarse.
No puedo usar nada en el servidor ya que el sitio web es solo HTML ... por lo que no se usa ningún script del lado del servidor.
Leí algo sobre esto aquí: http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/ pero no puedo encontrar más información sobre esto ... así que estaba preguntándose si este método es confiable.
javascript
html
Daan Poron
fuente
fuente
Una solución más sencilla sería utilizar
sessionStorage
, en este caso:var myVariable = "Hello World"; sessionStorage['myvariable'] = myVariable; var readValue = sessionStorage['myvariable']; console.log(readValue);
Sin embargo, tenga en cuenta que
sessionStorage
guarda todo como una cadena, por lo que cuando trabaja con matrices / objetos, puede usar JSON para almacenarlos:var myVariable = {a:[1,2,3,4], b:"some text"}; sessionStorage['myvariable'] = JSON.stringify(myVariable); var readValue = JSON.parse(sessionStorage['myvariable']);
Entonces, cuando cierra la página / pestaña, los datos se pierden.
fuente
SessionStorage
solo proporciona unaclient-only
solución sin ningún acceso a estos valores en el lado del servidor. En muchos marcos del lado del servidor como ASP.Net y PHP, nos gustaría acceder fácilmente a los valores del lado del cliente que podemos haber almacenado sin usar campos ocultos, etc., y luego las cookies se convierten en una mejor solución ya que las cookies se envían automáticamente al lado del servidor.Para crear una cookie de sesión única con un script java, puede usar lo siguiente. Esto funciona para mi.
document.cookie = "cookiename=value; expires=0; path=/";
luego obtenga el valor de la cookie de la siguiente manera
//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 ""; }
De acuerdo, para admitir IE, podemos dejar "expira" por completo y podemos usar esto
document.cookie = "mtracker=somevalue; path=/";
fuente
Utilice el siguiente código para configurar una cookie de sesión, funcionará hasta que se cierre el navegador. (asegúrese de no cerrar la pestaña)
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'); }
fuente