我想使用简单的客户端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作为我的跳跃点。
答案 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上测试,所以不确定它将如何在那里执行。