2011-05-13 34 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