【问题标题】:jquery: js-cookie in ie7 not working?jquery:ie7 中的 js-cookie 不起作用?
【发布时间】:2011-05-13 21:48:31
【问题描述】:

大家好, 不明白...我只想在使用 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 中第一次访问该页面,顶栏应该是可见的,但它不是。我可以看到它很快闪烁,然后它被隐藏了。 (不会淡出,只是隐藏)。

知道是什么原因造成的吗?我的代码有什么奇怪的地方吗?

【问题讨论】:

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


    【解决方案1】:

    这很可能是由您的 CSS 引起的。您的 JS 不会立即隐藏它,而您的 CSS 让它可见。把你的案子换掉。默认情况下隐藏您的栏(在 CSS 中),然后,如有必要,使用 JavaScript 显示它。

    这将防止页面加载的短暂时刻在您的 JS 出现之前可见。

    所以...

    #topbar { display: none; }
    

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

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

    【讨论】:

    • 好吧,我实际上是默认用 css 隐藏它......我只是没有在我的问题中发布 css - 对此感到抱歉。您在 js 中提出的更改似乎实际上是合乎逻辑的,但它没有任何区别。它适用于所有浏览器和ie8。 ie7 但是不显示栏。
    • 我找到了解决方案。因为顶栏是一个叠加层。我将它设置为position:relative,并给它一个非常高的 z-index 99999。
    • 有趣。我很高兴我至少......也许......帮助了一点。
    【解决方案2】:

    尝试编辑 cookie 插件:

    在第 83 行,而不是:

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

    使用:

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

    【讨论】:

      猜你喜欢
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多