4
でwindow.onpopstateイベントを発生しないで、私は以下のようなものを作成:完全なコードはここにあるHTML5履歴APIは - HTML5歴史APIを使用すると、最初のページのロード
(function (d, w) {
$(function() {
$("#indicator").hide();
if (typeof history.pushState !== 'undefined') {
$("#citylinks a").click(function (e) {
history.pushState({ path: this.href }, '', this.href);
act(this.href);
e.preventDefault();
});
w.onpopstate = function (event) {
act(d.location);
};
}
function act(location) {
$("#results").hide();
$("#indicator").show();
$.getJSON(location, function (data) {
$("#results").html(data.result);
$("#results").fadeIn();
$("#indicator").hide();
});
}
});
})(document, window);
を:
私がここに持っている問題は、サーバーから初めてページが来るときにw.onpopstate
イベントを発生させたくないということです。
私がこれをやりたい理由は、サーバー側でページを埋めたいので、クライアント側のコードでそのようにしたくないからです。 w.onpopstate
イベントを削除すると、history.go()
イベントを捕まえることができなくなります。
この問題を解決する方法はありますか?
良い解決策。ひとつは、 'windows.onpopstate'イベントごとに実行されることです。私は( 'null'または' undefined'の場合は 'window.onpopstate'イベントを調べることによって)それを防ぐことを試みましたが、動作させることができませんでした。 – tugberk
これはちょっとしたhack-y解決策です。代わりに、このような何かを試すことができますhttp://stackoverflow.com/a/11453389/191551。 –
@ライアン:たぶんそれはハッキーですが、私はそれを実際に見ません。何かあれば、リンクした例の追加チェックを必要としないので、より効率的です。もちろん、私たちはマイクロ秒で話していますが、それは重要ではありませんが、フリップ側ではこのテクニックを使用することで何か間違いはありません。残念ながら、残念ながら、現時点ではこの時点で思い出すことができませんでした:-p –