【问题标题】:Once per browser session cookie每个浏览器会话 cookie 一次
【发布时间】:2014-04-01 19:12:36
【问题描述】:

我有这个弹出代码,一旦用户关闭浏览器窗口就会激活。问题是我的网站上有图片,所以每次冲浪者点击图片时,就好像他被带离了网站并显示了弹出窗口。

我想让这个弹出窗口在每个浏览器会话中只显示一次。

var sync = true;
window.onbeforeunload = doSync;

function doSync() {
if (sync == true) {
window.open('myurl', '_blank');
}
else {
return;
}
}

那么...我应该放置什么代码来制作一个浏览器访问一次的 cookie?

提前致谢!

【问题讨论】:

    标签: javascript


    【解决方案1】:

    Cookie 用于存储您希望随每个 REQUEST 发送到服务器的数据,所以不要为此使用 Cookie,请使用 sessionStorage

    var sync = true;
    window.onbeforeunload = doSync;
    
    function doSync() {
        if (sync && !window.sessionStorage.getItem('popupShown')) {
            window.sessionStorage.setItem('popupShown', 1);
            window.open('myurl', '_blank');
        }
    }
    

    其中 popupShownsessionStorage 中的标志,表示它以前发生过。

    【讨论】:

    • Paul S 谢谢你。我进行了一些测试,它似乎可以正常工作并且可以满足我的需要。
    • 就像对任何使用它并且像我一样新手的人的评论:尽量不要在同一站点上的页面上使用目标空白,因为 sessionStorage 会认为这是一个新实例并打开另一个弹出窗口并这可能很烦人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2023-03-10
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多