实时检查sessionStorage

时间:2015-05-20 16:09:05

标签: javascript jquery json

我正在尝试构建在鼠标离开浏览器时弹出信息的代码。只要我弹出警报并存储会话信息,但只有在我刷新浏览器之后,我才能正常工作。

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

我想尽可能简单地构建它。我怎么看:如果未设置会话,则在mouseleave事件上显示警报。如果设置会话,如何使代码实时检查?

2 个答案:

答案 0 :(得分:2)

您只是在用户首次离开页面时添加$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('services.xml'); 。这意味着,在sessionStorage事件被触发之前,会话密钥永远不会被设置。

让事件每次都触发并根据mouseleave数据

更改功能

我粘贴了你的代码,没有if检查,它可以工作:

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... '); } });

答案 1 :(得分: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'} ));
            }
      });