2017-02-23 11 views
3

Я хочу использовать webworker для обнаружения моего простоя.Как использовать webworker в javascript/Jquery для определения времени простоя?

Я пишу код. Что еще мне нужно добавить, чтобы мой счетчик перезапустился при перемещении мыши или нажал клавишу?

Я новичок в кодировании. Пожалуйста помоги. Вот мой код:

<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, если я перемещаю мышь или нажимаю любую клавишу на клавиатуре.

+0

Есть ли какая-то конкретная причина, по которой вы решили использовать работников для этого? Кажется, что-то, что будет нормально работать в основном потоке? – adeneo

+0

@adeneo Есть некоторые другие вещи, которые я собираюсь добавить в этот demo.js, и я подумал, что если есть способ, я могу использовать это и внутри рабочего js – Frank

+0

@adeneo. Я никогда не использовал рабочего, поэтому я хочу спросить, можем ли мы имеют несколько postmessage и onmessage ... как одно сообщение отправляет какой-то другой объект, а другое сообщение отправляет другой объект, который читается onmessage на главной странице? – Frank

ответ

1

Поскольку веб-работники не имеют доступа к DOM, вы можете оставить сообщение на ваш рабочий из вашего основного потока при нажатии клавиши или перемещения мыши:

$(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; 
    }} 
Смежные вопросы