2009-11-08 9 views
0

본문로드시 mousemove()에서 호출 한 자바 스크립트 함수가 있는데 함수가 작동하지만 문제는 함수가 오버로드되어 있지 않다는 것입니다. 여기에 코드입니다 :본문로드시 자바 스크립트 함수 호출

function timeout(){ 
     setTimeout ("logout()",60000); 

     } 
    function logout() 
     {  
     parent.parent.location="logout.php"; 
     } 

<body onmousemove="timeout()" > 

이제 문제는 신체 부하 때마다 지정된 시간 후에 마우스를 이동하지만 페이지가 여전히 로그 아웃 페이지로 이동 그러나이 시간을 오버라이드 (override)에 호출입니다 때마다 마우스 이동 및 기능 전화.

+0

더 많은 코드를 게시하십시오. – Sam152

답변

3

setTimeout에 전화 할 때마다 다른 통화가 대기열에 추가됩니다. 즉, 현재 시간 초과를 대체하지 않습니다. 이 문제를 해결하려면 clearTimeoutsetTimeout에 대한 이전 호출 값으로 호출하여 다른 시간 제한 이벤트를 취소해야합니다.

var timeoutID = null; 
function timeout() { 
    if (timeoutID !== null) { 
     clearTimeout(timeoutID); 
    } 
    timeoutID = setTimeout(logout, 60000); 
} 

내가 대신 문자열의 logout 함수에 대한 참조를 전달 setTimeout 호출을 바꿨다. eval을 사용하기 때문에 문자열을 전달하지 않는 것이 가장 좋으며 반드시 필요하지는 않습니다.