1

このコードは、本質的に次のものと似ています。

タブがアクティブな場合にのみ setTimeout を実行する

ただし、ここで達成しようとしているのは、ドキュメントに対するユーザー アクティビティが発生したときに、この 10 秒のタイマーをリセットすることです。私のテストでは、現在キーアップを使用していますが、ドキュメント内の任意の要素の上にマウスを移動することでこれを機能させる必要もあります..

これがコードです。私が行う可能性のある変更については、コメント付きのコードを参照してください。実際には機能しないことがわかったので、コメントのままにしました。

$(function(){
//var keyed = false;
function myFunction() {
    window.location.href="/backoffice/logout.jsp?forceClose=true";
}

(function() {
    //Just under 15 min in milliseconds
    //var time = 895000,
    var time = 10000,
        delta = 100,
        tid;

    tid = setInterval(function() {
        if ( window.blurred ) { return; }    
        time -= delta;
        //if ( keyed ) { 
        //  time = 10000; 
        //} 
        //keyed = false;
        if ( time <= 0 ) {
            clearInterval(tid);
            myFunction(); // time passed - do your work
        }        
    }, delta);
})();
//window.onkeyup = function() { keyed = true; };
window.onblur = function() { window.blurred = true; };
window.onfocus = function() { window.blurred = false; };
});

もちろん、これを実際に機能させる方法はわかりませんが、私の思考プロセスが明確であることを願っています。アクティブなタブがキープレスまたはマウスクリック (おそらくマウスの動き) もリッスンするようにしようとしています。その場合はタイマーをリセットします。

これを達成するためのアドバイスはありますか?

4

2 に答える 2

2
function myFunction() {
    //window.location.href="/backoffice/logout.jsp?forceClose=true";
    alert('hello world');
}

function listener() {

     window.time = 10000,
     delta = 100,

    window.tid = setInterval(function() {   
        window.time -= delta;
        console.log(window.time);
        if ( time <= 0 ) {
            clearInterval(window.tid);
            myFunction(); // time passed - do your work
        }        
    }, delta);

};

    listener();

     $(document).on('keyup keypress blur change mousemove',function(){
        clearInterval(window.tid);
        listener();
    });

});
于 2013-11-07T21:24:21.880 に答える