我在一段等待时间之后打开一个登录用户的会话时间,弹出窗口禁用并且用户自动注销,但是如果我在弹出窗口外单击,则计数器时间设置为0所以它不是退出。
window.idleTime = 0;
jQuery(document).ready(function() {
//Increment the idle time counter every minute.
var idleInterval = setInterval(timerIncrement, 60000);
//Zero the idle timer on mouse movement.
jQuery(this).mousemove(function (e) {
idleTime = 0;
//alert(idleTime);
});
jQuery(this).keypress(function (e) {
idleTime = 0;
//alert(idleTime);
});
jQuery(".classname").live("click", function(){
//alert('');
idleTime = 0;
})
});
function timerIncrement() {
var timedouturl = "logout.php?sTimeOut=1";
//alert('Calling..');
idleTime = idleTime + 1;
if (idleTime > 2) { // 1 minutes
//alert('Time Out =>'+idleTime);
//window.location.reload();
jQuery.fancybox({
'type' : 'ajax',
'href' : 'popup.php',
'autoSize' : false,
'width' : 450,
'height' : 'auto',
afterLoad : function(){
//alert("IdleTime :"+idleTime);
setTimeout( function() {
jQuery.fancybox.close();
//alert("LastIdleTime :"+ window.idleTime);
if (window.idleTime > 2){
window.location.href = timedouturl;
}
},60000);
}
});
}
}
我希望在弹出窗口外打开弹出窗口时阻止每个js事件。任何想法?
这里
jQuery(".classname").live("click", function(){
//alert('');
idleTime = 0;
})
用于点击fancybox上的ok按钮。
答案 0 :(得分:0)
您可以使用一个布尔值来跟踪弹出窗口何时打开,然后仅在弹出窗口未打开时重置超时:
window.idleTime = 0;
var timeoutPopupOpen = false;
jQuery(document).ready(function() {
//Increment the idle time counter every minute.
var idleInterval = setInterval(timerIncrement, 60000);
//Zero the idle timer on mouse movement.
jQuery(this).mousemove(function (e) {
if (!timeoutPopupOpen) {
idleTime = 0;
}
//alert(idleTime);
});
jQuery(this).keypress(function (e) {
if (!timeoutPopupOpen) {
idleTime = 0;
}
//alert(idleTime);
});
jQuery(".classname").live("click", function(){
if (!timeoutPopupOpen) {
idleTime = 0;
}
//alert('');
})
});
function timerIncrement() {
var timedouturl = "logout.php?sTimeOut=1";
//alert('Calling..');
idleTime = idleTime + 1;
if (idleTime > 2) { // 1 minutes
//alert('Time Out =>'+idleTime);
//window.location.reload();
timeoutPopupOpen = true
jQuery.fancybox({
'type' : 'ajax',
'href' : 'popup.php',
'autoSize' : false,
'width' : 450,
'height' : 'auto',
afterClose : function(){
timeoutPopupOpen = false;
},
afterLoad : function(){
//alert("IdleTime :"+idleTime);
setTimeout( function() {
jQuery.fancybox.close();
//alert("LastIdleTime :"+ window.idleTime);
if (window.idleTime > 2){
window.location.href = timedouturl;
}
},60000);
}
});
}
}
我不确定您使用的是哪个Fancybox,因为我似乎无法在fb2docs或these docs from fancybox.net中找到afterLoad
选项,但只是保留跟踪某人何时启动和关闭fancybox以便您知道是否应该取消超时。