jquery:ie7中的js-cookie无法正常工作?

时间:2011-05-13 21:48:31

标签: javascript jquery cookies internet-explorer-7 ie7.js

嘿伙计们, 不明白......我想在我的页面顶部显示一个栏,只有用ie6,ie7或ie8查看。

<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中第一次访问该页面,则顶部栏应该是可见的,但事实并非如此。我很快就能看到它闪烁然后隐藏起来。 (不淡出,只是隐藏)。

知道是什么原因引起的吗?我的代码有什么奇怪的东西吗?

2 个答案:

答案 0 :(得分:1)

这很可能是由你的CSS引起的。你的JS并没有立即隐藏它,你的CSS让它可见。改变你的情况。默认情况下隐藏您的栏(在CSS中),然后,如有必要,使用JavaScript显示它。

这样可以防止页面加载的那个短暂时刻在JS出现之前可以隐藏它。

因此...

#topbar { display: none; }

这意味着你的JS可以阅读:

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

答案 1 :(得分:0)

尝试编辑cookie插件:

在第83行而不是:

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

使用:

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