2011-05-12 97 views
6

上是否有可能刷新網頁,也就是說,每分鐘當用戶沒有在網頁上?例如,如果我訪問一個pageX屬性,並在網頁上停留不刷新,但只要我從頁面(也就是切換到另一個標籤/窗口或程序導航走,那麼pageX屬性刷新每隔x分鐘?或者秒我如何去了解這個THX如何在用戶離開頁面時定期刷新頁面?不刷新如果頁面

更新:?。

「頁面上」是指頁面是當前窗口即它專注所以如果pageX屬性有一個鏈接到一個彈出式窗口(例如100 x 100),點擊打開彈出窗口,而頁面在該小型彈出窗口後面仍然可見,但沒有焦點,因此需要按上述刷新。 C請問。

更新2

如下建議由Mattk ..繼似乎在Firefox是工作(沒有在最新的檢查)和Chrome。在IE 8,如果我切換到另一個選項卡或程序,它不」刷新頁面,但如果我在頁面上,然後單擊地址欄,它開始刷新頁面。任何想法如何讓它在IE中工作?

var pageFocused = false; 

function onPageFocus(){ 
    pageFocused = true; 
    //document.body.className = 'focused'; 
} 

function onPageBlur() { 
    pageFocused = false; 
    //document.body.className = 'blurred'; 
}; 

function checkActivity() {   
    if(pageFocused == false){ 
     location.reload(true); 
    } 
} 
setInterval("checkActivity()", 1 * 1000); 
if (!+"\v1") { // check for Internet Explorer    
    document.onfocusin = onPageFocus; 
    document.onfocusout = onPageBlur; 
} else if (/*@[email protected]*/false) { 
    document.onfocusin = onPageFocus; 
    document.onfocusout = onPageBlur; 
} else { 
    window.onfocus = onPageFocus; 
    window.onblur = onPageBlur; 
} 
+0

你的問題確實沒有多大意義。如果網頁上沒有人,那麼需要不斷刷新它。事實上,當沒有人看到它時,它會刷新到什麼屏幕。 – stevecomrie 2011-05-12 16:43:24

+0

@stevecomrie:他說這個頁面應該定期刷新,當它沒有焦點時。要麼是因爲選中了另一個選項卡,要麼完全是其他應用程序/窗口。 – Orbling 2011-05-12 16:45:24

+0

親愛的SteveComrie,感謝您的評論。它對你來說可能沒有任何意義,但它在我正在處理的應用程序中有很大的意義。謝謝。 – TigerTiger 2011-05-12 16:45:50

回答

1

通過檢測鼠標懸停和按鍵(對於那些不使用鼠標的人)以及頁面焦點在頁面上跟蹤用戶在頁面上的活動,因爲我不認爲模糊事件適用於您正在做一個文檔/頁面級別。原因是模糊事件似乎只在您返回到選項卡時纔會調用,而不會在您實際離開頁面時調用。

每當這些事件(鼠標懸停,按鍵或頁面焦點)發生,重置pageFocused爲true。

var pageFocused = false; 

function onPageFocus(){ 
    pageFocused = true; 
} 

然後每隔30秒,你可以運行一個函數是否有任何改變。這將每隔30秒(30000毫秒)運行一次名爲checkActivity的函數。

setInterval("checkActivity()", 30 * 1000); 

在該功能中,如果一直沒有活動在三十秒,重新加載頁面。

function checkActivity() { 

if(pageFocused == false){ 
    location.reload(true); 
} 

頁面將會再重裝,並設置pageFocused回假,並啓動整個事情過你。

+0

剛剛更新了我的問題,試圖更清楚地說明「在頁面上」 – TigerTiger 2011-05-12 17:06:21

+0

我更新了我的答案以匹配您的「在頁面上」活動。 – MattK311 2011-05-12 17:07:28

+0

請參閱我的更新2. – TigerTiger 2011-05-13 10:42:00

1

我想你可以在mousestop上啓動一個定時器,它是document.onmousemove事件處理程序中的一個處理函數:如此。

document.onmousemove = (function() {var onmousestop = function() { 
/* do stuff */}}); 

然後一分鐘後什麼,刷新頁面。

2

window對象有大量的browsersblurfocus事件。

您可以附加一個事件處理程序到blur事件以開始定期刷新,另一個到focus來停止它。這將是作爲blur執行setInterval,節省了intervalID然後在focus事件處理程序使用clearInterval停止輪詢一樣簡單。

+0

嗯是的,我需要一個跨瀏覽器的解決方案..讓我想想這個歡呼 – TigerTiger 2011-05-12 16:58:16

+0

我認爲這一切都取決於「在頁面上」的意思。但是,這些正確的事件確實是「在頁面上」。 – MattK311 2011-05-12 16:58:21

+0

@ Mattk311 - 基本上「在頁面上」意味着頁面內容對用戶可見並且具有焦點。 – TigerTiger 2011-05-12 17:00:45