我想用JQuery創建一個SPA網站。我知道如何使用history.pushState
和$(window).on('popstate')
,但我有幾個問題。目前我有一個處理popstate事件和導航鏈接的router.js文件。我將鏈接放置在自定義屬性(data-navId =「templates/page/page.html」)或href中,並使用 $(e).preventDefault();
來處理它。用戶點擊鏈接並執行$('.page-content').load('url', function() {})
和history.pushstate
。瞭解JQuery的SPA實施
1)我是否被迫在每個模板中包含包含這些 函數的router.js文件?我只需要一個包含這些 函數的html。模板應該只包含HTML及其相應的腳本。我設法做到了這一點,但如果用戶 刷新頁面模板顯示沒有風格或任何東西。是 使用散列的答案?或者,如果用戶關閉了瀏覽器,並且啓動了「還原以前的頁面」選項,則該模板將僅用 加載其html。
在過去,我開發的SPA頁,而僅僅使用popstate
和history.pushState
哈希,但我必須包括所有對每個文件的HTML,然後調用$('.page-content').load(url + ' .page-content > *', function() {});
避免刷新錯誤。
我也知道Facebook使用popstate
用於現代瀏覽器,hashchange
用於較舊的可能包括Modernizr.js或一些自定義庫。但是,路由器如何工作而不將其包含在每個模板中?
在此先感謝。