2017-02-23 16 views
3

私のアイドル時間を検出するためにwebworkerを使用したいと思います。javascript/Jqueryでwebworkerを使用してアイドル時間を検出するにはどうすればよいですか?

私はいくつかのコードを書いています。私のカウンターがマウスの移動またはキーの押下で再開するために追加する必要があるものは何ですか?

私は新しいコーディングです。助けてください。

<ul id="message-list"></ul> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    var worker = new Worker('demo.js'); 
    worker.onmessage = function(e){ 
    var message =e.data; 
    $('#message-list').append('<li>'+message+'</li>'); 
    } 
</script> 

これは私のメインのHTMLファイルとdemo.jsでは以下の通りです:

var idleTime = 0; 
var idleInterval = setInterval(timerIncrement, 1000); 
function timerIncrement() { 
idleTime = idleTime + 1; 
self.postMessage(idleTime); 
    if (idleTime == 15) { // 15 seconds 
     self.close(); 
    } 
} 

15秒間に実行されます。このコードのループでは、ワーカーが終了します。ここに私のコードです。私が望むのは、マウスを動かすか、キーボードの任意のキーを押すと、このループは再び0から始まります。ウェブ労働者がDOMへのアクセスを持っていないので、キーを押すか、マウスを移動しているとき、あなたはあなたのメインスレッドからワーカーにメッセージを投稿することができます

+0

これに労働者を使用することを決めた特別な理由はありますか?メインスレッドでうまく動くようなものですか? – adeneo

+0

@adeneoこのデモで追加しようとしていることがいくつかあります.jsと私はこれもワーカーjsの内部でも使用できる方法があれば考えました – Frank

+0

@adeneo私は従業員を一度も使わなかったので、複数のpostmessageとonmessageを持っています... 1つのpostmessageがいくつかの異なるオブジェクトを送信していて、別のpostmessageがメインページのonmessageによって読み込まれる別のオブジェクトを送信していますか? – Frank

答えて

1

$(document).keypress(function(e){ 

       worker.postMessage({ 
       type: 'KEYPRESS', 
       keycode: e.which 
      }); 
    }); 

そして、あなたのwokerでは、耳を傾けますメッセージ:

self.onmessage = function(msg) { 
    switch (msg.data.type) { 
    case 'KEYPRESS': 
    console.log("Key pressed"); 
    idleTime = 0; 
    break; 
    }} 
関連する問題