2

SVGパス要素でのマウスオーバーイベントの検出に問題があります。パス要素のstrokeWidthが小さいほど、マウスオーバーの検出に成功しないようです。

また、jquery-svgプラグインを使用して描画を行っています。

以下は、path要素でjqueryマウスオーバーイベントを使用して検出しようとするフィドルです。 マウスオーバーフィドル

以下は、mousemoveリスナーをsvgに接続し、document.getElementFromPointを使用して検出しようとするフィドルです。 getElementFromPointフィドル

特にマウスの動きが速い場合は、どちらも確実に機能しないようです。これらのいずれかをより感度の高いものにして、マウスオーバーをより適切に検出することは可能ですか?または、おそらくこれを行うためのより良い方法ですか?

4

1 に答える 1

2

ブラウザの動作方法では、イベントを継続的に取得することはありませんがmouseover、オペレーティングシステムがカーソル位置を更新するたびにイベントを取得します。また、マウスが高速で移動している場合は、数ピクセル離れたイベントが発生します。マウスはドキュメント上をスライドせず、ジャンプします。これは、各イベントが発生する場所を示すjsfiddleです。mouseoverカーソルの2つの連続した位置の間のすべての要素のイベントを取得するためにできることは何もありません。

別のことを行うことができます。mousemoveイベントの以前の場所を記憶し、そのポイントと現在のマウス位置の間の線を計算し、この線とドキュメント内の他のすべての形状との間のすべての交点を計算します。ただし、これにはリソースを大量に消費することになります。そのために使用できるAPIがないため、交差点を自分で計算する必要があります。あなたを助けることができる図書館があります。

于 2012-08-30T20:01:19.387 に答える