2011-05-20 52 views
1

所以,這是一個非常簡單的問題,但我對其他人的意見有關處理此問題的「最佳」做法感興趣。該網站是建築能源信息的展示性交付;它主要是HTML5/CSS3和帶有一些沉重圖形的jQuery。它確實使用PHP通過API利用建築信息,但它不會驅動該網站的任何其他屬性。在長時間(分鐘)間隔後優雅地重定向用戶

因此,該網站需要做的最後一件事情,在設置的時間間隔(通常是幾分鐘長)之後,頁面需要將用戶重定向到流中的下一頁。瀏覽器也會定期刷新(重新啓動循環動畫)非常重要。

我當然認爲是非常簡單的:

<html> 
<head> 
<script type="text/javascript"> 
<!-- 
function delayer(){ 
    window.location = "../javascriptredirect.php" 
} 
//--> 
</script> 
</head> 
<body onLoad="setTimeout('delayer()', 300000)"> 
</body> 
</html> 

這工作,但它並沒有「感覺」是最好的選擇。提前感謝任何能夠提出想法的人。

回答

1

我認爲你的方法最好。當你用代碼刷新頁面時,如果你在那裏檢測到這個參數,你可以在URL和頁面加載時添加一個querystring參數,然後你知道它已經刷新了,然後你可能決定在幾頁刷新後重定向。

function delayer(){ 
    var refresh_value = getQuerystring('r') 
    if(refresh_value == '') 
     window.location = "../samepage.php?r=1" 
    if(refresh_value == '1') 
     window.location = "../samepage.php?r=2" 
    if(refresh_value == '2') 
     window.location = "../javascriptredirect.php" 
} 

功能被拉離:http://www.bloggingdeveloper.com/post/JavaScript-QueryString-ParseGet-QueryString-with-Client-Side-JavaScript.aspx

function getQuerystring(key, default_) 
{ 
    if (default_==null) default_=""; 
    key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regex = new RegExp("[\\?&]"+key+"=([^&#]*)"); 
    var qs = regex.exec(window.location.href); 
    if(qs == null) 
    return default_; 
    else 
    return qs[1]; 
} 

如果這事在開發較早被我會建議其他頁面的加載內容,滑出你的當前內容然後在新的內容滑動。這將打開大門,輕鬆觸發頁面刷新。當我想到一個網站作爲幻燈片時,我想到了jquery mobile。當您點擊jqmobile中的鏈接時,它會將下一頁的內容加載到當前DOM中,然後滑出舊內容並滑入新內容。加載新內容後,哈希標籤會附加到url中,這有助於瞭解它是如何在同一頁面上引用另一塊內容(例如使用<a href="#paragrapn2">Go to Paragraph 2</a>時)。

+0

嘿謝謝大敗,我真的在挖掘你提到的jQ方法;感謝所有的代碼示例。 – 2011-05-20 17:08:08

2

您還可以使用不依賴於JavaScript的元刷新標記。

<meta http-equiv="refresh" content="300000;url=http:/yourdomain.com/javascriptredirect.php" /> 

這樣做的缺點是,如果你需要與此重定向互動或取消它,因爲它不是JavaScript的約束,你不能用它做任何事情。

至於你的問題的其他部分也需要刷新偶爾重新開始動畫的問題,我會建議使用JavaScript來完成這一點後,給定的時間,而不是刷新頁面。原因是,如果刷新頁面,重定向「計時器」將重新啓動,這意味着如果刷新比重定向快,則永遠不會重定向。