2013-07-18 5 views
1

키보드를 트리거하기 위해 mouseenter 이벤트를 코딩하고에서 타이머를 트리거하는 mouseleave 이벤트를 어떻게 코딩합니까?마우스를 끈 상태에서 마우스를 끈 상태에서 타이머를 켜거나 끕니다.

타이머 간격에 도달하면 웹 페이지가 새로 고침됩니다.

나는 그것을 시도했지만 그것을 밖으로 작동하지 않을 수 있습니다 :

<script> 
    $(document).ready(function() { 
     var timer; 
     function start() { 
      timer = setInterval(function(){refresh()}, 5000); 
     } 
     start(); 
     $('body').mouseenter(function() { 
      clearTimeout(timer); 
     }); 
    }).mouseleave(function(e) { 
     var pageX = e.pageX || e.clientX, 
      pageY = e.pageY || e.clientY; 

     if (pageX <= 0 || pageY <= 0) { 
      start(); 
     } 
     else 
      clearTimeout(timer); 
    }); 

    function refresh() { 
     window.location.reload(true); 
    }); 
</script> 

가 (이 코드는 부분적으로 이곳에서 찍은 : https://stackoverflow.com/a/17714300/2593839)

+0

오 하나님, 당신은 기본적으로 끔찍한 '메타 refresh' 태그를 다시하고 있지 사항 clearInterval를 사용해야합니다. – adeneo

+0

실제로, 나는 기본적으로 사용자 활동과보다 구체적으로 mouseenter/mousleave 이벤트를 기반으로 전체 화면 iFrame을 새로 고칩니다. 메타 새로 고침 태그는 내 특정 요구 사항에 맞지 않습니다. – Yuvi100

답변

2

이 코드가 작동해야합니다

function refresh() { 
    window.location.reload(true); 
} 

var timer; 
function start() { 
    timer = setTimeout(function(){refresh()}, 5000); 
} 

jQuery(document).ready(function() { 
    start(); 

    jQuery('body').mouseenter(function() { 
    clearTimeout(timer); 
    }).mouseleave(function(e) { 
    var pageX = e.pageX || e.clientX, 
     pageY = e.pageY || e.clientY; 

     if(pageX <= 0 || pageY <= 0) { 
     start(); 
     }else { 
     clearTimeout(timer); 
     } 
    }); 
}); 
+0

좋은 작품 :) – Yuvi100

0

을 그냥 가지고

clearInterval(timer); 

not

clearTimeout(timer); 
+0

함수는 최대 한 번 실행될 수 있기 때문에'setTimeout()'호출을 변경하는 것이 더 낫습니다 –

+0

이것은 잘 작동했을 것입니다. 미안하지만 충분한 평판 포인트가 없습니다. 투표하세요! – Yuvi100

0

당신은 그런 식으로 뭔가를 할 수 있습니다

var mytimeout; 
$('.box').on('mouseenter', function() { 
    if(mytimeout) { 
    clearTimeout(mytimeout); 
    } 

}).on('mouseleave', function() { 
    mytimeout = setInterval(function() { 
    console.log('tick'); 
    },1000);  
}); 

참조 바이올린 : http://jsfiddle.net/uXrKG/

0

이 당신을 위해 작동합니다.

DEMO

var mytimeout, i; 
i = $('.box').text(); 

$('.box').on('mouseenter', function() { 
    if(mytimeout) { 

     clearInterval(mytimeout); 
    } 

}).on('mouseleave', function() { 
    mytimeout = setInterval(function() { 
     $('.box').text(i++); 
    },1000);  
}); 

는 사항 clearTimeout