ajaxナビゲーション付きWebアプリケーションでは、html5の履歴ナビゲーションを利用するつもりです。html5ヒストリーナビゲーション:popstateがトリガーされていないexcepページロード時
しかし、popstateイベントへのバインディングはトリガーされません。
HTML5が可能な場合は(それが正しく検出され、デモがFFとChromeで同様に動作します):
// 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;
});
動作しないもの:
-
それは、ページの読み込みにEXCEP、
- popstateコールバックのhistoryChangeHandler()は、リンクをクリックしても呼び出されません。つまり、クリックは印刷されますが、イベントは印刷されません。私が試した何
:
- 延期のsetTimeoutとpushStateの呼び出し。
- e.preventDefault();そして
- はまた、DIV-Sに接続し、返すfalseではなくtrueを返す作業は何
真:
- historyChangeHandlerは()ページのロード時に呼び出されました。
- 戻るボタンを押すと、historyChangeHandler()が呼び出されます。
- historyChangeHandler()は、フォワードボタンのプッシュ時に呼び出されます。
- コンソールからhistory.pushState({url: "/ test"}、 ""、/ test)を呼び出す場合は、historyChangeHandler()を呼び出してください。
私が見逃している手がかりは?
コードを参照すると、リンクをクリックするとpushStateが呼び出されます。なぜなら、それは私がそれを期待しているからです。 – sibidiba
pushStateを呼び出すと、すぐにpopStateをトリガーすると思いますか?それは意味をなさない。あなたが何を期待していても、答えが気に入っているかどうかにかかわらず、それはまだそれが想定されている方法で働いています。 –