语法和具有localStorage'moch'cookie的功能,适用于Chrome

时间:2014-09-16 17:42:22

标签: jquery cookies local-storage

我想使用简单的客户端jquery cookie来限制元素的查看。非常直接,以前在这里有过变化,我知道。

我还想引用我正在使用的localStorage和sessionStorage插件:Yannick Albert

所以我所处的位置就jQuery而言,这些是我$(document).ready(function(){

中的第一行
$(function (){
    if( $.cookie('sessionCookie') == "sessionVisit" ){
        $('#element').hide();
    }
    else if( $.localStorage('sessionCookie') == "sessionVisit" ){
        $('#element').hide();
    }
    else{
        return false;
    }
});

$(function(){
    var chromeBrowser = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
    (chromeBrowser)?$.localStorage('sessionCookie', 'sessionVisit'):$.cookie('sessionCookie', 'sessionVisit');
});

在Firefox中完全正常。我加载页面一次或第一次,元素就在那里。当我重新加载时,它不存在。

Safari和Chrome虽然感觉好像$.localStorage不等待重新加载。元素永远不会显示。我不知道它的技术术语,但$.localStorage被立即读取,即使我认为我的序列正确并且$.localStorage是在'检查'之后做出的。

如果这是有道理的。那我在做什么逻辑或语法错误呢?

我使用this question作为我的跳跃点。

1 个答案:

答案 0 :(得分:0)

我不知道这是否是正确答案,但它正在处理这些变化:

$(function (){
    if( $.cookie('sessionCookie') == "sessionVisit" ){
        $('#element').hide();
    }
    else if( $.sessionStorage('chromeCookie') == "chromeVisit" ){
        $('#element').hide();
    }
    else{
        return false;
    }
});
$(function(){
    var chromeBrowser = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
    (chromeBrowser)?
        $.sessionStorage('chromeCookie', 'chromeVisit'):
            $.cookie('sessionCookie', 'sessionVisit');
});

我遇到的第一个错误是我使用了相同的字符串作为localStorage以及cookie键和值。这肯定会在那里造成重大错误。

然后,我发现浏览器关闭时没有删除localStorage。因此,在放置localStorage值之后,它似乎一直存在,直到它被覆盖,这当然具有它的价值,但不是我所需要的。所以插件的sessionStorage非常适合这项任务。

一切都在按需要和预期工作。我还没有在IE上测试,所以不确定它将如何在那里执行。