2013-04-17 29 views
-2

我需要定期運行一個功能,無論我在哪裏頁。該功能將定期獲取一些數據。Javascript運行在後臺無論頁面功能

我不認爲這個工程:

function myFunc() 
{ 
    //your code 
} 

//set the interval 

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

因爲它只適用於我在哪裏,現在的頁面,所以如果我去到另一個網頁,不再被執行的功能。 我想寫一個函數,當用戶在索引頁面時開始運行,然後定期調用,直到用戶關閉頁面。 有什麼想法?提前致謝!

+0

你在這個功能中究竟做了什麼?因爲在多個HTML頁面上運行相同的javascript將不起作用,但也許有更好的方法來處理您的問題。 –

+0

在我的函數中,我會通過ajax獲取一些數據。有關服務器費用的數據,並根據這些數據,我可以發出警報郵件...... –

+0

在這種情況下,爲什麼當功能執行停止並且在頁面加載時再次啓動時,它很糟糕?除此之外,使用websockets/[socket.io](http://socket.io/)來監聽服務器更改將會更加優雅。 –

回答

1

你需要一個backend applicationcron-job來做到這一點。

另一種方法是創建一個僅Ajax的單頁應用程序。我想推特使用這種模式。

+0

它與cron-job和其他一些事情合作! –

2

這在瀏覽器中無法使用JavaScript。當您離開頁面時,腳本將停止。您必須在每個初始化此定期更新的頁面上包含一個腳本。或者您可以將您的應用程序重寫爲「單頁應用程序」,這似乎在當今很流行。

+0

似乎是最好的選擇 – LmC

1

根據你在這個函數中做什麼,你可能最好使用一個JS Worker,它將作爲一個新線程運行,並允許你繼續在後臺繼續處理,而不必擔心JS超時。

這裏的要點是你要求的內容是幾乎不可能在JS內,除非你使用類似於jQUery的東西,並動態地加載你的網頁到div?這意味着你仍然有效果(視覺),您更改網頁,但瀏覽器只加載數據

它很容易,其實使用jQuery它在加載內容的DIV:

$('#elementoloadid").load("/path/to/load"); 

您可以在不使用jQuery的情況下實現此功能,但需要更長的時間。

+0

爲什麼頁面需要刷新,如果它的所有動態加載? – LmC

+0

而在你投票之前,在問題 – LmC

+0

中沒有提及刷新,我沒有說過它?但是,如果你推後退按鈕,你會去頁面?據我所知,jQuery可以覆蓋後退按鈕和前進按鈕 – LmC