26

History API の小さなデモをコーディングしています。そして、私はこれに苦労しています:

$(window).bind('popstate',  
    function(event) {
        console.log('pop: ' + event.state);
    });

「前へ」ボタンをクリックすると、「ポップ:未定義」がログに記録されます...

しかし、代わりにこれを行うと、期待どおりに動作します:

window.onpopstate = function(event) {
    console.log('pop: ' + event.state);
};

今度は 'pop: [object Object]' をログに記録します...

つまり、jQuery はイベント オブジェクトをコールバックに渡さないようです。
jQuery に問題はありますか? それとも私は何かを台無しにしましたか?

4

1 に答える 1

38

最初の例では、正規化された jQuery イベント オブジェクトを取得しています。2 番目のインスタンスでは、ブラウザーのイベント オブジェクトを取得しています。jQuery は、すべての新しい HTML5 イベントと関連する属性の正規化を完了していないと思います。それまでは、元のイベント オブジェクトにアクセスする必要があります。これは、originalEvent プロパティを介して jQuery イベント オブジェクトを介して行うことができます。ここでいくつかの追加の詳細と例を見つけることができます: stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined

event.originalEvent.state
于 2012-04-24T15:31:40.893 に答える