私はAjaxスタイルのウェブサイトを作成したい小さなプロジェクトに取り組んでいます。コンテンツはjQueryで読み込まれload()
ます。ご存知の方もいらっしゃると思いますが、これの欠点は、表示されるコンテンツに応じてURLが変更されないことです。この作業を行うには、を使用できますpushState()
。これはクロスブラウザでサポートされていないため、プラグインを使用しましたhistory.js
。
これは非常にうまく機能していますが、問題は、戻るボタンと進むボタンが正常に機能しておらず、何が間違っているのかわからないことです。URLは正しく変更されており、コンテンツも変更されていますが、タイトルはまったく変更されていません。タイトルとは、ブラウザウィンドウのウィンドウ(またはタブ)のタイトルとして表示されるものを意味します。つまり<title>
、ロードされたページの、またはそのページを参照するリンクのタイトル属性(これらは同じです)。タイトルが必要なページのセクションのみを呼び出すという事実と関係があると思います(つまり、に追加#content
することによってload()
)。それでもそのページのタイトルが欲しいです。これが私が今まで持っているもののテストケースです。(2013年12月28日以降は使用できなくなりました。)jQueryファイル:
$(document).ready(function () {
var firstLink = $("ul > li:first-child > a");
var menuLink = $("ul > li > a");
var firstLoadedHtml = firstLink.attr("href") + " #content";
$("#sectionContainer").hide().load(firstLoadedHtml).fadeIn("fast");
firstLink.addClass("active");
menuLink.click(function(e) {
history.pushState(null, null, this.href);
e.preventDefault();
e.stopImmediatePropagation();
var CurLink = $(this);
var newLoadedHtml = CurLink.attr("href") + " #content";
var oldSection = $(".contentPage");
$("#sectionContainer").hide().load(newLoadedHtml).fadeIn("fast");
menuLink.removeClass("active");
CurLink.addClass("active");
});
$(window).bind('popstate', function() {
var returnLocation = history.location || document.location;
$('#sectionContainer').load(returnLocation + "#content");
});
});
また、基本ページ(つまり、/ sectionLoaderTest /)に戻ると、最初のページのコンテンツが読み込まれるまでしばらくの間空白になることにも注意しました。これを最適化する方法はありますか?
さらに、jQueryを使用して、クリックされたリンクにアクティブクラスを追加しています。これが履歴に応じて変化することをどのように確認できますか?ユーザーが戻ったときに正しいリンクが強調表示されるようにするには?
したがって、3つの質問は次のとおりです。
- 前後に移動するときにタイトルを機能させる
- メインページの読み込み時間を最適化する
- 前後に移動するときにアクティブクラスを修正する
すべての助けを歓迎します!
注1:history.jsと自分のスクリプトを基に構築したいので、< HTML5
ブラウザーのサポートを維持します。1.これが機能しなければならないことはわかっていますが、何か問題が発生しています。2.まったく新しいスクリプトを考え出すのではなく、自分の解決策を見つけて、すでに作成したスクリプトに実装できれば、時間を節約できます。
注2:バウンティは私のすべての質問に答えることができる彼または彼女にのみ与えられます(3)!