私は history.js を使用しており、URL が変更されたときに ajax 経由でコンテンツを呼び出したいと考えています。私はそれを機能させていますが、問題は、状態が変化したときに読み込まれる URL に応じて、ページの応答が異なる必要があることです。たとえば、ローカル スコープ内では、右側のナビゲーションの URL に関連するページを、その隣のコンテンツ エリアにロードする必要があります。URL が現在のセクション外のスコープに変更された場合、ajax 呼び出しで、右側のナビゲーションを含むセクション全体を含むコンテナーにページをロードする必要があります。history.js を使用して URL に確実に異なる応答をするにはどうすればよいですか?
例:
右側のナビゲーション項目がクリックされたときに URL を変更するコードがいくつかあります。
var History = window.History;
$('#right-hand-nav a').on('click', function(event) {
var place = $(this).attr('href');
History.pushState("", "page title", place);
event.preventDefault();
});
...そして、URL が変更されたときに別のコンテンツをロードするコード:
History.Adapter.bind(window,'statechange',function() {
var State = History.getState()
subContent = $('#sub-content');
$.ajax({
url: State.url,
beforeSend : function() {
// Would start pre-loader code
},
success : function(result) {
// Would end pre-loader code
subContent.html(result);
}
});
});
onstatechange
しかし、新しい URL がこのサブセクションの外にある場合に、イベント ハンドラーの反応を変えたい場合はどうすればよいでしょうか? 新しい URL が原因で AJAX リクエストが に属さないコンテンツを取得するのでは$('#primary-content').html()
なく、それを置き換えたい場合はどうすればよいですか?:$('#sub-content').html()
$('#sub-content')
基本的な HTML:
<section id="primary-content">
<section id="sub-content">
</section>
<nav id="sub-navigation">
<ul>
<li>
<a href="#">Nav item</a>
</li>
<li>
<a href="#">Nav item</a>
</li>
<li>
<a href="#">Nav item</a>
</li>
</ul>
</nav>
</section>
URL がwww.example.com/sub-section/page.htmlに変更された場合
<section id="primary-content">
<section id="sub-content">
<!-- ajax should load content here -->
</section>
<nav id="sub-navigation">
<ul>
<li>
<a href="#">Nav item</a>
</li>
<li>
<a href="#">Nav item</a>
</li>
<li>
<a href="#">Nav item</a>
</li>
</ul>
</nav>
</section>
URL がwww.example.com/page.htmlに変更された場合
<section id="primary-content">
<!-- ajax should load content here -->
</section>
を使用して、URL が別のセクションに移動するタイミングを安全に判断するにはどうすればよいでしょhistory.js
うか? その変化にどのように反応しますか?