会话存储工作,但需要一个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";
    }

目前,我的模态在您第一次访问主页时出现,除非我在新的选项卡/窗口中打开它,否则不会出现,这符合我想要的方式。

任何帮助都非常感谢。

您可以使用功能检测来找出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);
    }
}

最新更新