web-dev-qa-db-ja.com

event.originalEvent jQuery

現在、jQueryラーニングセンターに没頭しています。私は最初から最後まで行きます。

この段落

また、イベントオブジェクトにはoriginalEventというプロパティが含まれています。これは、ブラウザ自体が作成したイベントオブジェクトです。 jQueryはこのネイティブイベントオブジェクトをいくつかの便利なメソッドとプロパティでラップしますが、場合によっては、たとえばevent.originalEventを介して元のイベントにアクセスする必要があります。これは、モバイルデバイスやタブレットでのタッチイベントに特に役立ちます。

最後の文 'これは、特にモバイルデバイスとタブレットでのタッチイベントに役立ちます。'しかし、これはラーニングセンターがこれまでoriginalEventに入るほどです。

event.originalEventのより集中的な研究/実践のための優れたリソースを知っている人はいますか?特にタッチイベント/モバイルデバイスに関連して?

41
BryanK

event.originalEventは通常、ネイティブ event (これも here と記述されています)です。

ただし、ブラウザに互換性があり、イベントが touch event その後、そのAPIはevent.originalEvent

簡単な答えは、event.originalEventは常に同じではなく、どのイベントタイプがハンドラーをトリガーしたか、およびブラウザーの環境によって異なります。

40
Travis J

event.originalEventを使用する必要がある場合があります。ドロップイベントを使用して、ドラッグアンドドロップでドロップされたファイルのインスタンスを取得しようとしていました。

var files = event.dataTransfer.files; // Gives error: trying to get property of undefined

書いている間

var files = event.originalEvent.dataTransfer.files; // Works fine

つまり、jQueryはこの例のFile APIなどのすべてのAPIでネイティブブラウザーイベントをラップしないため、jQueryイベントから除外されたプロパティと関数にアクセスするには、event.originalEventを使用する必要があります。それが誰かを助けることを願っています。

12

jQueryは標準イベントを認識し、さまざまなブラウザーに合わせてそれらを適合させます。しかし、標準イベントがない場合、jQueryはイベントオブジェクトの適合に失敗しますが、ブラウザが元のオブジェクトを提供するフェールセーフoriginalEventを保持します。

たとえば、mousewheelおよびDOMMouseScroll need event.originalEventも、ホイールイベントのサポートがないためです。

3