JQuery を使用して SPA Web サイトを作成しようとしています。使い方はわかったのですが、いくつか質問がありますhistory.pushState
。$(window).on('popstate')
現在、popstate イベントとナビゲーション リンクを処理する router.js ファイルがあります。リンクをカスタム属性 (data-navId="templates/page/page.html") または href に配置し、
$(e).preventDefault();
. ユーザーがリンクをクリックすると$('.page-content').load('url', function() {})
、history.pushstate
実行されます。
1) これらの関数を含む router.js ファイルをすべてのテンプレートに含める必要がありますか? これらの関数のみを含む 1 つの html が必要です。テンプレートには、HTML とそれに対応するスクリプトのみを含める必要があります。私はなんとかそれを達成しましたが、ユーザーがページを更新すると、テンプレートはスタイリングなどなしで表示されます。答えはハッシュを使用していますか?または、ユーザーがブラウザを閉じて [前のページを復元] オプションを有効にすると、テンプレートは HTML のみで読み込まれます。
popstate
以前は、 andのみを使用してハッシュなしで SPA ページを開発しましhistory.pushState
たが、各ファイルにすべての html を含めてから$('.page-content').load(url + ' .page-content > *', function() {});
、更新のバグを回避するために呼び出す必要がありました。
また、Facebook がpopstate
最新のブラウザーとhashchange
古いブラウザーに使用することは、おそらく Modernizr.js またはカスタム ライブラリを含めることで知っています。しかし、すべてのテンプレートにルーターを含めずに、ルーターはどのように機能するのでしょうか?
前もって感謝します。