我正在尝试修改Eric Hynds jQuery IdleTimeout plugin的功能而没有太多运气。当'onTimeout'被调用时,我试图触发'onResume'函数再次启动计时器,然后关闭对话窗口。当它工作时,您应该在空闲时看到对话框窗口,然后消失,然后在相同的空闲时间后重新出现 - 循环。为什么循环?一旦我开始使用这部分,我将在'onTimeout'调用中添加更多内容。
这是我的代码,我从firebug知道我的问题是如何触发onResume调用(第9行)。该插件通过对话框窗口将“onResume”调用绑定到click事件,但显然在此实例中不会有用户单击。
$.idleTimeout('#dialog', 'div.ui-dialog-buttonpane button:first', {
idleAfter: 5,
warningLength: 5,
pollingInterval: 2,
keepAliveURL: 'keepalive.php',
serverResponseEquals: 'OK',
onTimeout: function(){
$(this).dialog('close');
self.onResume();
},
onIdle: function(){
$(this).dialog("open");
},
onCountdown: function(counter){
$countdown.html(counter); // update the counter
}
});
感谢您的帮助!
答案 0 :(得分:0)
“插件通过对话框窗口将'onResume'调用绑定到click事件,但显然在这个实例中不会有用户点击。”
选项 -
可以使用触发器jquery api以编程方式触发click事件。 e.g。
$(this).trigger('click');
答案 1 :(得分:0)
该插件通过对话框将'onResume'调用绑定到click事件 窗口,但显然在这个实例中不会有用户点击。
这不是真的。该插件将“Resume”链接绑定到实际ping服务器的内部函数,然后调用您定义的onResume回调。你试图直接调用onResume() - 这没关系,但它不会真正恢复你的会话。
你可能最好直接模仿Resume链接上的点击,如下所示:
onTimeout: function() {
$(this).dialog('close');
$(this).data('idletimeout').resume.trigger('click');
},