2015-10-20 5 views
4

В приведенной ниже функции показана панель уведомлений, когда пользователь посещает страницу. Панель инструментов скользит вниз от верхней части окна, отбрасывая содержимое страницы.Запуск Jquery slideDown только один раз за сеанс

Это нормально, но эффект становится раздражающим при посещении большего количества страниц. То, что я пытаюсь выполнить: сползать панель уведомлений только при первом взаимодействии пользователя с сайтом. После того, как уведомление сначала отображается, если пользователь обновляет страницу или посещает другие страницы сайта, панель уведомлений отображается мгновенно, без эффекта скольжения.

Возможно, я должен использовать SessionStorage для этого, просто не совсем точно.

$(function(){ 
$('#notification_toolbar').slideDown(); 
}); 
+0

Вы устанавливаете какой-либо сеанс с использованием PHP или любого сервера? – Sina

+0

Я не использую PHP. Я могу использовать только javascript/JQuery. – Malasorte

ответ

6

Так как вы уже упоминали sessionStorage, это довольно легко использовать его, чтобы сохранить флаг, который говорит вам, если slideDown уже произошло или нет. Затем вы можете использовать этот флаг, чтобы убедиться, что это не повторится.

Внутри вы скользите вниз код:

// perform the slide down only if the slide down flag wasn't set 
if(sessionStorage.getItem('hasSlideDown') !== 'yes') { // check if slide down flag was set 
    sessionStorage.setItem('hasSlideDown', 'yes');  // set the slide down flag 
    $('#notification_toolbar').slideDown();    // perform the slide down 
} 

Как sessionStorage работы:

страница сессия длится до тех пор, как открыт браузер и сохраняется в течение перезагрузки страницы и восстановления. Открытие страницы в новой вкладке или окне приведет к инициированию нового сеанса, который отличается от того, как работают cookie сеанса.

+0

Почему пустой 'var state =;' – Christophe

+0

ok отредактирован ... nvm :) – Christophe

+0

С помощью вашего скрипта панель уведомлений никогда не отображается после первого слайда вниз. Мне нужно показать его мгновенно (без эффекта слайда) после первого взаимодействия. – Malasorte

1

Вы должны сохраняться информация, что скользят анимацию уже была выполнена, и в вашем коде, вам нужно поставить условно как

if (skipAnimation) { 
    # put your code to show toolbar without slide animation here 
} 

Вы можете achive, что во многих отношениях: с помощью URL-строки запроса (добавить skipAnimation = true для вашего адреса) или с помощью хранилища сеансов. Querystring будет проще всего, так как вы можете легко прочитать его с помощью jquery. Хранилище сеансов даст вашим пользователям больше опыта.

Смежные вопросы