有谁知道我如何能做到这一点使用检票的想法?检测检票用户闲置
我想当一定量的时间没有检测到用户活动来自动显示一个检票odal窗口。我正在考虑以某种方式使用AjaxSelfUpdatingBehavior,但实际上我没有明确的想法。
这可能与检票?
有谁知道我如何能做到这一点使用检票的想法?检测检票用户闲置
我想当一定量的时间没有检测到用户活动来自动显示一个检票odal窗口。我正在考虑以某种方式使用AjaxSelfUpdatingBehavior,但实际上我没有明确的想法。
这可能与检票?
此外,您还可以使用一些JS库不是捕捉所有Ajax调用,并可以肯定,你的用户是真正AFK(甚至没有触及他的鼠标)。
和(如果你使用这个JS框架)在检票口,你必须处理
ifvisible.idle(function(){
Wicket.Ajax.get({u: '${callbackUrl}'})// This code will work when page goes into idle status
});
您必须设置$ {} callbackUrl从检票口代码来让JS知道在Java代码中进行什么操作。这并不难。看看here。
这种方法比较棘手,但是如果你实现这个,你根本不用担心用户的操作(他可以阅读网站的信息,不要点击任何ajax链接,但突然间他会看到模态窗口)。
当然可以,我用这个作为自动注销功能
public class MyTimer extends AbstractAjaxTimerBehavior {
public MyTimer(int seconds) {
this(Duration.seconds(seconds));
}
@Override
protected void onTimer(AjaxRequestTarget target) {
// show your window magic
}
}
一下添加到您页面(add(new MyTimer(300));
),这将在您指定的秒数后调用。确保在进行ajax调用时用新的定时器替换定时器,或重置定时器。
谢谢!你说你在做Ajax调用时替换定时器。你是怎样做的? – user1119371 2014-09-22 07:09:54
我认为,你可以在页面上存储你的“MyTimer”实例作为变量,并在每一个Ajax调用,在你的页面(通过AjaxLink,AjaxBehavior等),调用myTimer.restart(AjaxRequestTarget)不是为了创造另一个实例处理的计时器。 – 2014-09-22 07:27:33
谢谢。这完美的作品! – user1119371 2014-09-22 13:08:29