2011-05-13 51 views
2

嘿家伙, 不明白...我想只在用ie6,ie7或ie8查看时在我的页面顶部显示一个栏。jquery:ie7中的js-cookie不工作?

<div id="topbar"> 
    <div class="topbarcontent">Some Information for users.</div> 
    <div class="topbarCloser" title="Schließen">&nbsp;</div> 
</div> 

的jQuery:

if ($.browser.msie && $.browser.version.substr(0,1)<9) { // if ie6 || ie7 || ie8 

var topbar = $.cookie('TopBar'); 

if (topbar === 'on') { 
    $('#topbar').hide(); 
} else { 
    $('#topbar').show(); 
} 

//Browser Tip 
$('#topbar .topbarCloser').click(function() { 
    $(this).parent().slideUp({ 
     duration: 300, 
     easing: 'easeOutQuint', 
     complete: function() { 
      $('#topbar').remove(); 
      $.cookie('TopBar', 'on', { expires: 1000 }); 
     } 
    }); 
}); 

}

用户只需点击越近,一个cookie被保存,酒吧隐藏以便日后访问。 (我知道这应该做一个数据库,但在我的情况下,这没关系)

它在ie8中工作正常,但在ie7酒吧闪烁像几毫秒和隐藏。因此,如果页面在ie7中第一次被访问,顶栏应该是可见的,但事实并非如此。我可以很快看到它闪烁,然后隐藏起来。 (不会淡出,只是隐藏)。

任何想法可能导致什么?我的代码有什么奇怪的?

回答

1

这可能是由你的CSS引起的。你的JS不会马上隐藏,你的CSS可见。切换你的情况。默认情况下(在CSS中)隐藏你的栏,然后,如果有必要,用JavaScript显示它。

这会阻止页面加载的瞬间,在JS出现之前可以看到它,以隐藏它。

所以......

#topbar { display: none; } 

这意味着你可以JS刚读:

if (topbar != 'on') { 
    $('#topbar').show(); 
} 
+0

嗯,我实际上隐藏它与CSS默认情况下......我只是没有发布在我的问题的CSS - 对不起。你对js的建议变化似乎是合乎逻辑的,但这并没有什么不同。它适用于所有浏览器和ie8。 ie7然而不显示酒吧。 – matt 2011-05-14 07:34:09

+0

我找到了解决方案。因为顶栏是一个叠加层。我把它设置为“position:relative”,并给它一个99999的高Z值。 – matt 2011-05-14 07:45:54

+0

有趣。我很高兴我至少......也许......帮了一些。 – 2011-05-14 23:20:58

0

尝试编辑的cookie插件:

在线路83而不是:

if (document.cookie && document.cookie != '') { 

使用:

if ((typeof(document.cookie) != 'undefined') && document.cookie != '') { 
+0

哪里是在这个价值? – 2011-05-13 22:01:32