Мне было интересно, можно ли создавать файлы cookie только для сеанса с помощью Javascript. Когда браузер закрыт, файлы cookie должны быть удалены.
Я не могу ничего использовать на сервере, поскольку веб-сайт является только HTML ... поэтому скрипт на стороне сервера не используется.
Я читал кое-что об этом здесь: http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/, но я не могу найти больше информации об этом ... так что я был интересно, надежен ли этот метод.
javascript
html
Даан Порон
источник
источник
В этом случае более простым решением было бы использовать
sessionStorage
:var myVariable = "Hello World"; sessionStorage['myvariable'] = myVariable; var readValue = sessionStorage['myvariable']; console.log(readValue);
Однако имейте в виду, что
sessionStorage
все сохраняется в виде строки, поэтому при работе с массивами / объектами вы можете использовать JSON для их хранения:var myVariable = {a:[1,2,3,4], b:"some text"}; sessionStorage['myvariable'] = JSON.stringify(myVariable); var readValue = JSON.parse(sessionStorage['myvariable']);
Итак, когда вы закрываете страницу / вкладку, данные теряются.
источник
SessionStorage
предоставляетclient-only
решение только без доступа к этим значениям на стороне сервера. Во многих серверных фреймворках, таких как ASP.Net и PHP, мы хотели бы легко получить доступ к значениям на стороне клиента, которые мы могли сохранить, без использования скрытых полей и т. Д., И тогда файлы cookie станут лучшим решением, поскольку файлы cookie автоматически отправляются в на стороне сервера.Для создания cookie только сеанса с помощью java-скрипта вы можете использовать следующее. У меня это работает.
document.cookie = "cookiename=value; expires=0; path=/";
затем получите значение cookie следующим образом
//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 ""; }
Хорошо, чтобы поддержать IE, мы можем оставить "expires" полностью и использовать это
document.cookie = "mtracker=somevalue; path=/";
источник
Используйте приведенный ниже код для файла cookie сеанса настройки, он будет работать до закрытия браузера. (убедитесь, что не закрываете вкладку)
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'); }
источник