我對於History.js如何在頁面加載時工作有點困惑。我做了一些實驗,但結果似乎不確定。History.js getState()at pageload
我的網站是一個搜索引擎,查詢存儲在URL參數:?Query=cats
。該網站純粹是用JavaScript編寫的。當我做一個新的搜索時,History.js很好用,新的查詢被更新,並且狀態被推送。
我的問題是如何創建一個初始狀態,如果用戶手動輸入一個URL,包括Query
參數。我試圖做到這一點的每一種方式都會導致在某些情況下運行搜索查詢兩次。這兩個似乎相沖突的用例包括:
- 用戶手動輸入網址(
mydomain.com?Query=cats
)到地址欄中並點擊輸入。 - 用戶導航到一個外部頁面,然後點擊返回按鈕
在這兩種情況下,所述的javascript負載,因此看起來到URL參數來生成的初始狀態。
但是,在第二種情況下,History.js將觸發statechange事件以及。
必要的代碼:
History.Adapter.bind(window,'statechange',function() { // Note: We are using statechange instead of popstate
var s = History.getState();
if(s.data["Query"]){
executeQuery(s.data);
}
});
和$(文件)。就緒我
// Get history from URL
s = getQueryObjectFromUrl(location.href);
if(s["Query"]){
History.pushState(s,'',$.param(s))
}
有沒有更好的辦法處理URL參數創建初始狀態?
你爲什麼不給用戶結果? PHP時,他去/?Query = dasd直接? –
客戶端應用程序的情況如何? realpage.html/dynamicAppState被服務器接收爲不存在的目錄,迫使您重寫或htaccess,並且永不加載正確的頁面。你不需要編寫任何服務器代碼來實現這個功能......它是一個客戶端實用程序。當使用#時,index.html被加載,並且#之後的數據可以被輕鬆解析。現在你在做什麼? –