用于弹出窗口的jQuery Mobile + Cookie

时间:2014-06-10 20:02:50

标签: jquery jquery-mobile cookies

我的项目有5个页面:1个首页和4个子页面。我有一个弹出窗口,显示在首页上显示的“触摸开始”。我正在使用后退按钮预取4个子页面以返回到首页。我已经设置了一个计时器,如果项目闲置了X段时间,请加载首页。

我已经设置了一个在首页上创建的cookie,用于跟踪是否显示了弹出窗口,因为我不希望每次用户导航到子页面时都显示弹出窗口到前面。当计时器关闭并重新加载到首页时,cookie将被删除。

Cookie创建和删除有效但当我导航到子页面并返回首页时,我仍然看到弹出窗口。如果我刷新页面,cookie将被视为现有,并且弹出窗口不会显示,并且在计时器关闭之前不会被清除,因此cookie可以正常工作。只是导航并返回首页时看不到cookie。有什么想法吗?

(function($) {

if ($.cookie('kiosk') !== 'YES') {
    $(document).on("pageshow", function() {
        $('#touchPopup').popup('open');
        $.cookie('kiosk', 'YES'); //set cookie
        console.log("Cookie created");
    });
}

var timer = null;
function goAway() {
    clearTimeout(timer);
    timer = setTimeout(function() {
        console.log("Removing cookie");
        $.removeCookie('kiosk', 'YES'); //delete cookie
        window.location = 'http://localhost/kiosk';  
    }, 5000);

}
window.addEventListener('mousemove', goAway, true);
goAway();  

})(jQuery);

编辑:我现在有一个实时版本http://lemonlimedesigns.ca/tohr/kiosk

您可以看到对话框打开,如果您关闭它,导航并返回,即使在控制台中您仍可以看到它检查cookie。

编辑2:解决了!我简化了代码,现在它正常工作:

    $(document).on("pageshow","#kiosk-front", function() {
        console.log("checking cookie");
        if ($.cookie('kiosk') !== 'YES') {
                $('#touchPopup').popup('open');
                $.cookie('kiosk', 'YES'); //set cookie
                console.log("Cookie created");
        } else {
            console.log("Cookie exists");
        }
    });

0 个答案:

没有答案