hashchange ハンドラー イベントをリッスンするために使用します。しかし、HTML5 では、ハッシュを使用せずに URL を変更できます。URL の変更にリスナーを追加するにはどうすればよいですか?
質問する
2408 次
1 に答える
1
ハッシュ変更は、JSを使用しなくても発生する可能性があります。アンカーリンクをクリックするデフォルトの動作と同様に、ハッシュ変更をトリガーできます。
HTML5履歴オブジェクトは、JSを介してのみ操作できます。このために、pushState()とreplaceState()があります。一度使用すると、ブラウザの前後のボタンがpopstateイベントをトリガーします。HTML5の履歴について私が知っているイベントハンドラーは他にありません。
$(window).bind("popstate", function() {
console.log(window.location.href);
});
何かが状態を履歴オブジェクトにプッシュしているときにトリガーが必要な場合は、オブザーバー(コールバック)がそれを許可するために、これを呼び出している人に依存する必要があります。
そうでなければ、それほど堅牢ではない何かを試すことができます:
function onPushState(callback) {
(function(pushState) {
history.pushState = function() {
pushState.apply(this, arguments);
callback.apply(window, arguments);
};
})(history.pushState);
}
onPushState(function() {
console.log(window.location.href);
});
状態の置換についても同じことができます。
繰り返しになりますが、デフォルトのブラウザの動作を変更しているため、これは適切なアイデアではない可能性があります。
于 2012-05-10T19:09:31.007 に答える