下面有两个jQuery空闲计时器,另一个是类似的代码,超时值高于第一个。我评论了第二个的超时值。这两个脚本在同一个xhtml页面上运行。当弹出第一个模态(一个具有较低超时的模式)时,我无法关闭它,也不会在“myTimeout”值之后进入重定向页面。
(function($){
var timer;
//var timeout = 600000;
//var myTimeOut = 120000;
var timeout = 120000;
var myTimeOut = 60000;
$(document).bind("idle.idleTimer", function(){
$( "#popup-modal" ).dialog({
modal: true,
autoOpen: true,
width: 574,
resizable : false,
draggable:false,
open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); $(".ui-dialog-print").hide(); $(".ui-icon").hide(); },
show: {effect: 'fade'}
});
timer = window.setTimeout(function()
{ window.location.href = "redirectpage.xhtml";},myTimeOut);
});
$(document).bind("active.idleTimer", function(){
timeout = 120000;
window.clearTimeout(timer);
});
$.idleTimer(timeout);
})(jQuery);
答案 0 :(得分:1)
您是否尝试为对话框的关闭事件添加处理程序?
(function ($) {
'use strict';
var timer;
var timeout = 120000;
var myTimeOut = 60000;
//var timeout = 600000;
//var myTimeOut = 120000;
function resetRedirectTimer() {
timeout = 120000;
window.clearTimeout(timer);
};
$(document).bind('idle.idleTimer', function () {
$("#popup-modal").dialog({
'modal': true,
'autoOpen': true,
'width': 574,
'resizable': false,
'draggable': false,
'close': function (event, ui) {
resetRedirectTimer();
},
'open': function (event, ui) {
$('.ui-dialog-titlebar-close').hide();
$('.ui-dialog-print').hide();
$('.ui-icon').hide();
},
'show': {
'effect': 'fade'
}
});
timer = window.setTimeout(function () {
window.location.href = 'redirectpage.xhtml';
}, myTimeOut);
});
$(document).bind('active.idleTimer', function () {
resetRedirectTimer();
});
$.idleTimer(timeout);
}(jQuery));
此外,在打开对话框时,您似乎隐藏了用于关闭对话框的默认控件。 你还有一个按钮(或其他控件)用来关闭对话框吗?
最后,为了澄清问题,看起来您希望在60秒不活动后重定向用户,但如果再次激活则取消重定向。
这是你想要完成的事情吗?
希望这有帮助。
皮特