2015-05-20 5 views
2

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

var key = JSON.parse(sessionStorage.getItem('data')); 
if (key.name != 'key') { 
    $('body').mouseleave(function() { 
     alert('Success'); 
     sessionStorage.setItem('data', JSON.stringify({name: 'key'})); 
    }); 
} 

Я хочу построить его как можно проще. Как я это вижу: если сеанс не установлен, покажите предупреждение о событии mouseleave. Как заставить этот код проверять в реальном времени, если сеанс установлен?

+0

Использование _ «в реальном времени» _ и _ «Jquery» _ в одном предложении, смелый шаг, давайте посмотрим, как он играет. – Nit

+0

Как вы можете догадаться, у меня была большая проблема, чтобы попытаться объяснить, что я хочу. Так что в реальное время это показалось хорошим словом. Кажется, я ошибся. – maarcs

+2

Извините, это была шутка, надеюсь, вы не приняли ее лично. – Nit

ответ

2

Вы только добавляете sessionStorage, когда пользователь сначала покидает страницу. Значение, пока не будет запущено событие mouseleave, ключ сеанса никогда не будет установлен.

Пусть огонь событие каждый раз, и изменение функциональности на основе данных sessionStorage

я вставил свой код без если проверки, и она работает:

$('body').mouseleave(function() { 
    var data = JSON.parse(sessionStorage.getItem('data')); 
    if(data) { 
     console.log('Has Key... '); 
    } else { 
     sessionStorage.setItem('data', JSON.stringify({name: 'key'})); 
     console.log('Add Key... '); 
    } 
}); 

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

+0

Не работает для меня. Он все еще показывает снова и снова. Я хочу создать что-то вроде этой страницы: http://220.lv, когда вы покинете страницу, вы получите всплывающее окно – maarcs

+0

Обновлен код, который работает для меня. Если это не сработает, у вас может возникнуть другая проблема, то, что вы показываете нам. – Phil

0

Пожалуйста сеансовые как этот

var key = JSON.parse(sessionStorage.getItem('data')); 
    if (key) { 
      $('body').mouseleave(function() { 
      alert('Success'); 
      sessionStorage.setItem('data', JSON.stringify({name: 'key'})); 
     }); 
    } 

это работает код. Было бы лучше, если бы вы проверить состояние в MouseLeave функции обратного вызова, как

var key = JSON.parse(sessionStorage.getItem('data')); 
    $('body').mouseleave(function() { 
     if (key) { 
      alert('Success'); 
      sessionStorage.setItem('data', JSON.stringify({name: 'key'})); 
      } 
     }); 
Смежные вопросы