jquery: js-cookie в ie7 не работает? - PullRequest
2 голосов
/ 14 мая 2011

Эй, ребята, не понимаю ... Я хочу показывать панель в верхней части моей страницы только при просмотре с 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 ]

1 голос
/ 14 мая 2011

Вероятно, это связано с вашим CSS.Ваш JS не скрывает это сразу, а ваш CSS имеет это видимым.Переключите ваше дело.Скройте панель по умолчанию (в CSS), а затем, при необходимости, покажите ее с помощью JavaScript.

Это предотвратит этот короткий момент при загрузке страницы там, где он виден, прежде чем ваш JS появится, чтобы скрыть его.

Итак ...

#topbar { display: none; }

Это означает, что ваш JS может просто прочитать:

if (topbar != 'on') {
    $('#topbar').show();
}
0 голосов
/ 14 мая 2011

попробуйте изменить плагин cookie:

в строке 83 вместо:

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

использование:

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