2012-11-05 41 views
1

我做了一些基本的頁面與hashchange事件插件。但現在我想要建立更大的東西,但無法找到正確的方法來以簡單的方式完成。導航與hashchange事件插件 - 一些問題

index.html以動畫登錄框開頭。如果您登錄到您的賬戶,登錄框會消失 - 哈希變成#start;內容+頁眉/頁腳加載並淡入。此部分現在沒有問題。

主要原因是激活瀏覽器後退按鈕而不離開index.html。我使用ajax和哈希來歸檔這個。 #登錄後啓動加載主接口。#消息加載消息接口。兩者都有一些額外的腳本+動畫,每次散列更改時都必須觸發。

我的問題一般是,我不知道如何去子鏈接。例如:用戶在#消息(ajax加載/ php/messages.php,淡入)。消息界面顯示他的收件箱中底部的鏈接以便到達他的發件箱。鏈接有哪些選項? messages.php會等待一個GET請求,如?s = n用於發送新郵件,?s = o用於發件箱。我怎樣才能做到這一點:激活瀏覽器後退按鈕?

是否有一種方法,如將散列更改爲#messages/outbox +加載文件/php/messages.php?s=o?應該如何jQuery代碼的樣子?對於主導航我使用了一個開關函數,比如'switch(hash){case #start; case #messages}';這不能是最好的解決方案,因爲我會得到更多的鏈接/哈希值。

任何建議/解決方案?

回答

1

我想你會永遠需要查找的網址,如果你想你的網址對用戶更有用,而不僅僅是回饋按鈕的功能。
考慮用戶在頁面打開時粘貼先前保存的網址,想要將它們放到要查找的位置,對嗎?
因此,考慮到這一點,我只會關心更改散列(當你想將它保存到歷史/可收藏狀態),然後處理頁面和動作的東西在hashchange事件。如果你正在使用hashchange事件插件,你可能想看看jQuery BBQ: Back Button & Query Library,它提供了一個完整的.deparam()方法,以及散列狀態管理和片段/查詢字符串分析和合並實用程序方法。「使它更容易。

+0

謝謝!燒烤插件似乎解決了我的問題!只是爲了確定:所以我可能會得到像#messages&s = o&foo = bar這樣的鏈接:它首先打開#messages,然後執行params? – MukMuk

+0

@MukMuk這取決於你想推多少個國家。如果你推送#messages,然後所有的參數,那麼你會有2個狀態,你將不得不按下後退按鈕2次返回到第一個狀態。你可以使用[jQuery.bbq.pushState](http://benalman.com/code/projects/jquery-bbq/docs/files/jquery-ba-bbq-js.html#jQuery.bbq.pushState)「添加一個'state'放入當前位置的瀏覽器歷史記錄中,設置location.hash並觸發綁定的hashchange事件回調(如果新狀態不同於以前的狀態)。「 –