jquery: js-cookie в ie7 не работает?
Эй, ребята, не понимаю... Я хочу показывать бар в верхней части моей страницы, только если смотреть с ie6, ie7 или ie8.
<div id="topbar">
<div class="topbarcontent">Some Information for users.</div>
<div class="topbarCloser" title="Schließen"> </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 ответа
Это, вероятно, вызвано вашим CSS. Ваш JS не скрывает это сразу, а ваш CSS имеет это видимым. Переключи свой случай. Скрыть панель по умолчанию (в CSS), а затем, при необходимости, показать ее с помощью JavaScript.
Это предотвратит этот короткий момент при загрузке страницы, где он виден, прежде чем ваш JS придет, чтобы скрыть его.
Так...
#topbar { display: none; }
Это означает, что ваш JS может просто читать:
if (topbar != 'on') {
$('#topbar').show();
}
Попробуйте отредактировать плагин cookie:
в строке 83 вместо:
if (document.cookie && document.cookie != '') {
использовать:
if ((typeof(document.cookie) != 'undefined') && document.cookie != '') {