2014-09-19 93 views
3

有誰知道我如何能做到這一點使用檢票的想法?檢測檢票用戶閒置

我想當一定量的時間沒有檢測到用戶活動來自動顯示一個檢票odal窗口。我正在考慮以某種方式使用AjaxSelfUpdatingBehavior,但實際上我沒有明確的想法。

這可能與檢票?

回答

1

此外,您還可以使用一些JS庫不是捕捉所有Ajax調用,並可以肯定,你的用戶是真正AFK(甚至沒有觸及他的鼠標)。

例如,見this免費的框架,它的demo

和(如果你使用這個JS框架)在檢票口,你必須處理

ifvisible.idle(function(){ 
    Wicket.Ajax.get({u: '${callbackUrl}'})// This code will work when page goes into idle status 
}); 

您必須設置$ {} callbackUrl從檢票口代碼來讓JS知道在Java代碼中進行什麼操作。這並不難。看看here

這種方法比較棘手,但是如果你實現這個,你根本不用擔心用戶的操作(他可以閱讀網站的信息,不要點擊任何ajax鏈接,但突然間他會看到模態窗口)。

+0

謝謝。這完美的作品! – user1119371 2014-09-22 13:08:29

1

當然可以,我用這個作爲自動註銷功能

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調用時用新的定時器替換定時器,或重置定時器。

+0

謝謝!你說你在做Ajax調用時替換定時器。你是怎樣做的? – user1119371 2014-09-22 07:09:54

+1

我認爲,你可以在頁面上存儲你的「MyTimer」實例作爲變量,並在每一個Ajax調用,在你的頁面(通過AjaxLink,AjaxBehavior等),調用myTimer.restart(AjaxRequestTarget)不是爲了創造另一個實例處理的計時器。 – 2014-09-22 07:27:33