ajaxナビゲーションを備えたWebアプリがあれば、html5の履歴ナビゲーションを利用するつもりです。
ただし、popstateイベントにバインドすると、トリガーされません。次の場合は、ページの読み込みを除きます。
HTML5が利用可能な場合(正しく検出されれば、デモはChromeでもFFと同様に機能します):
// Callback
function historyChangeHandler(data) {
console.log(data);
}
// Bind
$(window).bind('popstate', historyChangeHandler);
// Trigger
$("a").click(function(e) {
var url = "/";
// ...
console.log("clicked");
history.pushState({url: url}, "", url);
return false;
});
動作しないもの:
- リンクをクリックしても、popstateコールバックhistoryChangeHandler()は呼び出されません。つまり、クリックされたものは印刷されますが、イベントは印刷されません。
私が試したこと:
- setTimeoutを使用してpushState呼び出しを延期します。
- e.preventDefault(); falseではなくtrueを返します
- また、div-sにアタッチして、trueを返します
何が機能しますか:
- historyChangeHandler()は、ページの読み込み時に呼び出されます。
- historyChangeHandler()は、戻るボタンを押すと呼び出されます。
- historyChangeHandler()は、進むボタンを押すと呼び出されます。
- コンソールからhistory.pushState({url: "/ test"}、 ""、 "/ test")を呼び出す場合は、historyChangeHandler()!
私が見逃している手がかりはありますか?