Подтвердить что ты не робот

Сессия только куки с Javascript

Мне было интересно, возможно ли создавать сеансовые куки с Javascript. Когда браузер закрыт, файлы cookie должны быть удалены.

Я не могу ничего использовать на сервере, поскольку веб-сайт является только HTML... поэтому не используется серверная сторона script.

Я читал кое-что об этом здесь: http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/ но я не могу найти больше информации об этом... так что мне было интересно, надежный ли этот метод.

4b9b3361

Ответ 1

Да, это правильно.

Не помещая часть expires, создаст файл cookie сеанса, независимо от того, создан он в JavaScript или на сервере.

См. fooobar.com/questions/63025/...

Ответ 2

Более простым решением было бы использовать sessionStorage, в этом случае:

var myVariable = true;

sessionStorage['myvariable'] = myVariable;
myVariable = sessionStorage['myvariable'];

Однако имейте в виду, что sessionStorage сохраняет все как строку, поэтому при работе с массивами/объектами вы можете использовать JSON для их хранения:

var myVariable = {a:[1,2,3,4], b:"some text"};

sessionStorage['myvariable'] = JSON.stringify(myVariable);
myVariable = JSON.parse(sessionStorage['myvariable']);

Сеанс страницы длится до тех пор, пока браузер открыт и выживет при перезагрузке и восстановлении страницы. Открытие страницы в новой вкладке или окне приведет к запуску нового сеанса.

Итак, когда вы закрываете страницу/вкладку, данные теряются.

Ответ 3

Для создания cookie только с java script, вы можете использовать следующее. Это работает для меня.

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, мы можем оставить "окончательно" и использовать этот

document.cookie = "mtracker=somevalue; path=/";