sessionStorage работает, но нужен файл cookie

Итак, я получил следующий код, который делает то, что мне нужно, но теперь мне сказали, что он должен работать в ie7, и sessionStorage не работает в этом браузере. Я не очень разбираюсь в печенье, поэтому мне было интересно, если кто-то может указать мне в правильном направлении.

    var yetVisited = sessionStorage['visited'];
    if (!yetVisited) {

        $j("#adspaceModal").modal("show").on("shown", function () {
    window.setTimeout(function () {
        $j("#adspaceModal").modal("hide");
    }, 20000);
});

        // open popup
        sessionStorage['visited'] = "yes";
    }

В данный момент мой модальный режим появляется в первый раз, когда вы посещаете домашнюю страницу, и не появляется, если я не открою его в новой вкладке / окне, которое работает так, как я хочу.

Буду признателен за любую оказанную помощь.

1 ответ

Решение

Вы можете использовать функцию обнаружения, чтобы выяснить, sessionStorage доступен, и если не использовать плагин jQuery Cookie:

var yetVisited = sessionStorage ? sessionStorage['visited'] : $.cookie('visited');
if (!yetVisited) {
    $j("#adspaceModal").modal("show").on("shown", function () {
        window.setTimeout(function () {
            $j("#adspaceModal").modal("hide");
        }, 20000);
    });

    // open popup
    sessionStorage ? sessionStorage['visited'] = 'yes' : $.cookie('visited', 'yes');
}

На самом деле, вероятно, лучше абстрагировать его от собственной функции:

function storage(key, value) {
    if (!value) {
        // getter
        return window.sessionStorage ? window.sessionStorage[key] : $.cookie(key);
    } 
    else { 
        // setter
        window.sessionStorage ? window.sessionStorage[key] = value : $.cookie(key, value);
    }
}
Другие вопросы по тегам