2014-12-17 4 views
0

현재 작업에만 로그인하는 사람을 보여주는 홈페이지가 포함 된 시스템을 설계하고 있습니다. 나는이 코드 사용하여 수행 한 3 분마다 새로 고침이 홈페이지를 설정 요청을받은 :홈 페이지 새로 고침

function startTimer() { 
var now = new Date(); 
var minutes = now.getMinutes(); 
var seconds = now.getSeconds(); 
var secTime = minutes*60*seconds; 

if(secTime % (3*60) == 0){ 
    var refreshTime = 3*60*1000; 

} else { 
    var refreshTime = (secTime % (3*60)) * 1000; 
} 
setTimeout('refresh()', refreshTime);} 

function refresh() { 
window.location.href = 'myURL'; 

} 

startTimer(); 

내가 현재 가지고있는 문제입니다 제가이 페이지에서 멀리 탐색 할 때, 여전히 시스템, 그것은 나를 홈페이지로 되돌려 보내고 나는 내가하고있는 일을 잃어 버린다. 다른 사람이 이동했을 때 멀리 옮겨 가지 않고 멈추지 않은 사람들을 위해 홈페이지를 새로 고칠 수있는 방법이 있습니까?

저는 Javascript에 매우 익숙합니다. 많은 질문을하면 참을성있게 기다려주십시오. 미리 도움을 주셔서 감사합니다.

답변

1

사이트의 모든 페이지에서 공유 자바 스크립트 파일을 사용하고있어 모든 페이지에서 타이머가 계속 실행되는 것으로 가정합니다. 당신은 타이머 만 페이지의 URL을 확인하여 홈페이지에서 실행 있는지 확인하고이 검사 내부에 startTimer 기능을 래핑 수 :

if (document.location.href == "http://www.yourhomepage.com"){ 
    startTimer(); 
} 

당신의 홈페이지가 무엇이든 URL로 http://www.yourhomepage.com를 교체합니다. 이것은 귀하의 페이지가 별도의 html 파일 인 경우에만 작동합니다. 문서가 변경되지 않는 hashbang 메서드를 사용하는 경우이 메서드는 작동하지 않습니다.

+0

정말 고마워요 ... 꿈처럼 작동합니다. –

0

전체 페이지를 새로 고치는 대신 Ajax를 사용하여 페이지의 작업 로그 부분을 새로 고칠 수 있습니다.

0

페이지를 새로 고치면 window.location.href = 'myURL'; 때문에 코드가 홈 페이지로 리디렉션됩니다. 위치가 변경되면 매번 'myURL'로 리디렉션됩니다.

페이지의 일부만 새로 고침하고 싶습니다. XMLHttpRequest 또는 Ajax 요청 (현재 페이지를 다시로드하지 않고 현재 페이지에 페이지를로드)을 보내야합니다. https://developer.mozilla.org/fr/docs/XMLHttpRequest

페이지가로드되면 페이지에로드 된 텍스트를 삽입합니다.

그런 다음 setTimout에서 함수 이름을 arround 따옴표를 사용하지 않는 것이

function sendAjax(){ 
// ... ajax request 
// refreshTime = 3 * 60 * 1000; 
setTimeout(sendAjax, refreshTime); 
} 

sendAjax(); 

처럼, 모든 "대해 refreshTime"요청을 보내는 함수를 호출합니다. setTimemout은 (자신의 이름이 아니라 그의 값) 및 시간 매개 변수를 호출하는 함수가 필요합니다.