2011-09-06 6 views
5

"スワイプ"や "スクロール"のような指の動きを検出するファンシーなAppleマウスがあります。スクロール時にmouseover/mouseenterが起動しない

要素がであるため、カーソルを画面上に固定したまま、指を使ってページを下にスクロールすると、カーソルは(固定されていても)自然に異なる要素上を移動します。

私の問題は、マウスカーソルがマウスカーソルの真上にある場合、適切なマウスオーバー/マウスセンターコールバックが呼び出されないということです。

どうすればこの問題を解決できますか?

+1

可能な複製http://stackoverflow.com/q/3341183/901048 – Blazemonger

答えて

3

私が使ったほとんどのブラウザは、ページがスクロールしたときにマウスイベントを発生させません。 onscrollイベントを受信し、document.elementFromPointを使用して、onscrollイベントが発生したときにマウスカーソルの下に移動した要素を特定できます。

+0

Firefoxがイベントを発生させます。しかし、Chromeではなく... – Randomblue

+2

@Randomblueの2015年10月現在では、スクロールのパフォーマンスを最適化するために、ほとんどのブラウザベンダーの間で行われています。 – pilau

+0

しかし、マウスイベントが発生しなければ、どのようにしてelementFromPointのマウスカーソル座標を取得できますか?答えは完全ではありません。 – Matthew

0

私はあなたが要素に対してマウスの位置をチェックするタイマーで動作する機能が不足しているとは思っていませんが、パフォーマンスはそれに打撃を最小限に抑えて天文学になるでしょう。おそらく、ブラウザの製造元にバグレポートを提出して、他のブラウザでその動作が複製されているかどうかを確認する必要があります。マウスを物理的に移動させないとブラウザがマウスオーバー/マウスイベントを発生させないためだと思います。

1

Jqueryのmousemoveメソッドは、マウスが静的なままであっても、スクロールするときにマウスが要素にロールインされたときにトリガされるので、ここでは素晴らしい解決策です。

マウスセンターのコードがmousemoveで繰り返し実行されないように、ある種のフラグ/状態チェックを含める限り、のmouseenterイベントをmousemoveにすることもできます。

関連する問題