2011-03-27 46 views
2

我的網站上有兩個頁面,包含兩組選項卡,每個選項卡的鏈接都是ajax驅動的,但在未啓用javascript的情況下具有適當的href。我即將使用諸如jQuery Address之類的插件實現ajax'後退按鈕'解決方案。使用URL散列保留Ajax頁面狀態

我對這個解決方案的問題/困惑是,在JavaScript有機會解析哈希並加載正確的內容之前,頁面的默認內容仍然被加載。如果我最初隱藏內容,非JavaScript用戶將永遠不會看到任何內容。如果我最初沒有隱藏內容,用戶在更新之前會看到錯誤的頁面一段時間(除了首先加載錯誤標籤和正確標籤的額外開銷外)。

什麼是最好/最常見的方法來處理這個問題?

謝謝,布賴恩

回答

3

如果你使用散列,你將永遠有第一個錯誤的內容。您需要使用帶有HTML5 History API的服務器端解決方案來避免這種情況。 Read more

您可以使用: https://github.com/browserstate/ajaxify

而且具有標籤在服務器端渲染的東西,如if ($_GET['tab'] === '2') // render 2

+0

這是我正在尋找的討論。謝謝。 – Brian 2011-03-27 22:01:50

1

我認爲這是一個很好的問題。您是否嘗試過使用<noscript>標籤來包含顯示最初爲JS用戶隱藏的內容的CSS。這樣的事情:

<style type="text/css"> 
    #area-1, #area-2 { display: none; } 
</style> 

<noscript> 
    <style type="text/css"> 
    #area-1, #area-2 { display: block; } 
    </style> 
</noscript> 

希望這有助於!

+0

很聰明,這可能是工作。但是它仍然需要首先加載錯誤內容的開銷(即使它沒有顯示)......但是,我感覺可能沒有一個完美的解決方案。謝謝您的幫助。 – Brian 2011-03-27 18:42:38

+0

@brian好吧,現在我看到你接受的答案,我更清楚地看到你在問什麼:)很高興能有一點幫助。 – Groovetrain 2011-03-28 00:24:50

+0

我確實選擇了遵循你的建議,因爲在我的時間限制下,我無法實現服務器端解決方案。所以,再次感謝。 – Brian 2011-03-28 04:14:31