如何在idleTimeout jquery插件中触发onResume?

时间:2011-10-08 06:05:34

标签: jquery plugins jquery-plugins

我正在尝试修改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
    }
});

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

“插件通过对话框窗口将'onResume'调用绑定到click事件,但显然在这个实例中不会有用户点击。”

选项 -

可以使用触发器jquery api以编程方式触发click事件。 e.g。

$(this).trigger('click');

http://api.jquery.com/trigger/

答案 1 :(得分:0)

  

该插件通过对话框将'onResume'调用绑定到click事件   窗口,但显然在这个实例中不会有用户点击。

这不是真的。该插件将“Resume”链接绑定到实际ping服务器的内部函数,然后调用您定义的onResume回调。你试图直接调用onResume() - 这没关系,但它不会真正恢复你的会话。

你可能最好直接模仿Resume链接上的点击,如下所示:

 onTimeout: function() {
   $(this).dialog('close');
   $(this).data('idletimeout').resume.trigger('click');
 },