5

何が原因window.addEventListner('popstate', foo, false) window.attachEvent('onpopstate', foo)window.onpopstate=foo、関数 foo がトリガーされないのか疑問に思っていました。これに似たコードがあり、本番環境では起動しませんが、開発環境では起動します。JS を介して popstate イベントを無効にしたり、何らかの衝突や競合状態を発生させたりすることは可能ですか?

EDIT(Gustin):+サンプルコード

PopStateEvent.js (完全なリスト、jQuery 1.9.1 を使用):

$(window).bind('popstate', function () { alert("Pop state event received!"); });

この非常に単純な例をIE 10 (10.0.9200.16484) でテストしている場合、ポップ状態イベントを受け取りません (つまり、アラート ボックスは表示されません)。移動して IE の [戻る] ボタンを使用して戻ってきても、そうではありません。つまり、この Q/Aは私のケースを解決しません。

Chrome 24では、すべて正常に動作します。

4

1 に答える 1

0

history.pushState() または history.replaceState() を使用して呼び出していませんか?

popstate は、戻るボタンなど、ブラウザーで何かを実行したとき、または history.back() を使用して呼び出されたときにのみトリガーされます。

それ以外は、ページがロードされるときに popstate を発生させるため、chrome で動作します。そのため、イベントが実際にロードされていることを確認してください。これを確認することは、次の項目に含める必要があります。

if (document.readyState == "complete") {
    initApplication();
}

popstate は document.readyState に含まれていると思いますので、試してみてください。

于 2013-08-21T15:43:45.767 に答える