我正在尝试构建在鼠标离开浏览器时弹出信息的代码。只要我弹出警报并存储会话信息,但只有在我刷新浏览器之后,我才能正常工作。
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 :(得分: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'} ));
}
});