16

私のGoogle-fuは何も表示しません。

これを行うとき:

var stateObj = { state: "some state" };
history.pushState(stateObj, "page 2", "other.htm");

関連するウィンドウコールバックはありますか?

私はこれがあることを知っています:

window.onpopstate = function() {

}

これは、ユーザーが戻るボタンを押したときに聞くのに最適です。ただ、URLが変わったらいつでも聴きたいので、どうしたらいいのかわかりません。

URLが変更されたときのグローバルコールバックはありますか?

4

1 に答える 1

31

いいえ、onpushstate何もありません。ただし、少しモンキー パッチを適用すると、次のように修正できます。

var pushState = history.pushState;
history.pushState = function () {
    pushState.apply(history, arguments);
    fireEvents('pushState', arguments);  // Some event-handling function
};

これは、pushState が使用されている場合にのみ通知されます。おそらくreplaceStateについても同様のことをしたいと思うでしょう。

URL が変更されるたびに通知を受ける必要がある場合は、上記と hashchange ハンドラーを組み合わせることで、ほとんどの場合、そこに到達できます。

于 2012-05-02T18:58:07.517 に答える