Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вызов функции через ms секунд при mousemove (https://javascript.ru/forum/events/59333-vyzov-funkcii-cherez-ms-sekund-pri-mousemove.html)

DynkanMaclaud 06.11.2015 12:45

Вызов функции через ms секунд при mousemove
 
var timerId = (function(){
    
    
},0); 

 // устанавливаем таймер, чтобы потом при событии onmousemove                 //clearTimeout  работал


document.body.onmousemove=function(){
    
   clearTimeout(timerId);
    
    timerId = setTimeout(function(){
        
        console.log('yes');
        
    },100);
    
    
}


коряво работает блин((

JSfiddle

ruslan_mart 06.11.2015 12:57

(function() {
     var timerID;

     function timer() {
          console.log(true);
     };

     document.body.onmousemove = function() {
          clearTimeout(timerID);
          timerID = setTimeout(timer, 300);
     };
})();


Точно mousemove? Может mouseover?

DynkanMaclaud 06.11.2015 13:03

mousemove, так как часто очень вызывается... поэтому заглушку такую хотел поставить , но твой пример не работает, вызывается не с интервалом 300ms (((

DynkanMaclaud 06.11.2015 13:24

есть в js события которые слишком часто вызываются это mousemove или scroll ну и чтобы обработчик события слишком часто не вызывался я хотел написать функцию заглушку через setTimeout
типо проводишь ты мышкой по body в течение 3 с и обработчик события вызвался бы 10 раз так как setTimeout ({}300ms)

ruslan_mart 06.11.2015 13:37

(function() {
     var startTime = new Date().getTime();

     function timer() {
          console.log(true);
     };

     document.body.onmousemove = function() {
          var time = new Date().getTime();
          if(time - startTime >= 300) {
              startTime = time;
              timer();
          }
     };
})();

DynkanMaclaud 06.11.2015 13:43

спасибо


Часовой пояс GMT +3, время: 14:25.