web-dev-qa-db-ja.com

jQueryバインドpopstateイベントが渡されませんでした

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

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

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

しかし、代わりにこれを行うと、物事は期待どおりに機能します:

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

今回は「pop:[オブジェクトオブジェクト]」をログに記録します...

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

25
Jocelyn LECOMTE

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

event.originalEvent.state
37
KSev