2013-04-17 1 views
-2

저는 페이지에 관계없이 주기적으로 기능을 실행해야합니다. 이 함수는 주기적으로 일부 데이터를 가져옵니다.자바 스크립트는 페이지에 관계없이 백그라운드로 실행됩니다.

나는이 작품이라고 생각 해달라고 :

function myFunc() 
{ 
    //your code 
} 

//set the interval 

setInterval(myFunc,2000) //this will run the function for every 2 sec. 

을 그것은 단지 내가 지금의 페이지에 대해 작동하기 때문에, 그래서 다른 페이지로 이동하면, 기능은 더 이상 실행되지 않습니다. 사용자가 인덱스 페이지에있을 때 실행을 시작한 후 사용자가 페이지를 닫을 때까지 주기적으로 호출되는 함수를 작성하려고합니다. 아이디어가 있으십니까? 미리 감사드립니다!

+0

이 기능에서 정확히 무엇을하려합니까? 여러 HTML 페이지에서 동일한 JavaScript를 실행하면 작동하지 않지만 문제를 해결할 수있는 더 좋은 방법이있을 수 있습니다. 내 함수에 –

+0

내가 아약스에 의해 일부 데이터를 얻을거야. 서버 요금에 관한 데이터와 해당 데이터에 따라 경고 메일을 내보낼 수 있습니다 ... –

+0

이 경우 페이지가로드 될 때 함수 실행이 중지되고 다시 시작되는 이유는 무엇입니까? 그 외에도 websockets/[socket.io] (http://socket.io/)를 사용하여 서버 변경 사항을 수신하는 것이 더 우아 할 것입니다. –

답변

1

이렇게하려면 backend application 또는 cron-job이 필요합니다.

또 다른 방법은 Ajax 전용 단일 페이지 응용 프로그램을 작성하는 것입니다. 트위터가 그 모델을 사용하는 것 같아요.

+0

그것은 cron-job과 다른 것들과 함께 작동했습니다! –

2

브라우저에서 자바 스크립트로는 불가능합니다. 페이지에서 다른 곳으로 이동하면 스크립트가 중지됩니다. 이 정기 업데이트를 초기화하는 모든 페이지에 스크립트를 포함시켜야합니다. 또는 응용 프로그램을 "단일 페이지 응용 프로그램"으로 다시 작성할 수도 있습니다.이 응용 프로그램은 요즘 인기가있는 것으로 보입니다.

+0

가장 좋은 옵션 인 것 같습니다 – LmC

1

함수에서 수행하는 작업에 따라 새 스레드로 실행되는 JS Worker를 사용하는 것이 가장 좋을 수 있으며 JS 시간 초과에 대해 걱정할 필요없이 백그라운드에서 원하는만큼 처리 할 수 ​​있습니다.

여기서 중요한 점은 jquery와 비슷한 것을 사용하고 div에 동적으로 페이지를로드하지 않는 한 가까이에있는 근처에있는 것입니다. .

$('#elementoloadid").load("/path/to/load"); 
: 이것은 당신이 여전히 효과를 (시각적으로) 당신이 페이지를 변경하지만 브라우저에서만 데이터를로드

그것의 아주 쉬운 사실에 그 jQuery를 사용하여 DIV에 콘텐츠를로드해야 의미

jQuery를 사용하지 않고도이 작업을 수행 할 수 있지만 더 오래 걸릴 수 있습니다.

+0

모든 동적 페이지가로드 된 경우 페이지를 새로 고쳐야하는 이유는 무엇입니까? – LmC

+0

그리고 당신이 투표하기 전에 질문에 새로 고침의 theres 언급 없음 – LmC

+0

난 그랬지? 그러나 당신이 뒤로 버튼을 누르면 당신은 그 페이지로 갈 것입니까? jQuery는 내가 알고있는 한 뒤로 버튼과 앞으로 버튼을 무시할 수 있습니다. – LmC

관련 문제