2017-04-10 9 views
0

ユーザーが画面上でマウスを移動した場所のヒートマップを表示しようとしています(Chrome拡張機能を使用)。私はこれを処理するためにheatmap.jsと呼ばれるライブラリを使用しています。onmousemoveは、Z-インデックスを持つ要素とは異なる値を返します

具体的には、私は、一例としてこれを使用しています - https://www.patrick-wied.at/static/heatmapjs/example-mousemove-heatmap.html

私の問題は、私が上で、このヒートマップを表示したいサイトがz-indexの重い利用しているということです。この問題は、z-index以外の要素をマウスオーバーするとauto以外の値が返された場合、onmousemoveの値は画面上のマウスの値ではなく、左上の値の画面が返されます。

あなたがここにこの動作を確認することができます - https://jsfiddle.net/rj870o6c/

はこれに対抗するために、私は9999z-indexでページ全体の上にオーバーレイdiv要素を追加してみました。これは動作しますが、私は以下のページと対話する能力を失います。もちろん、pointer-events: none;を使用することはできません。マウスの値を取得する必要があるからです。

あなたがここにこの動作を確認することができます(黄色のボックス内のリンクをクリックしてみてください、それが動作しません) - https://jsfiddle.net/ktwbbpbn/

オーバーホバリング時に、マウスポインタの実際の値を取得する方法はありますz-indexの要素がありますか?

ご協力いただければ幸いです。

答えて

0

したがって、問題はマウスの位置を取得するためにlayerXlayerYを使用していたことが判明しました。これは、現在のレイヤー(https://developer.mozilla.org/en/docs/Web/API/UIEvent/layerX)を基準にしたデータしか返さないため、私のユースケースでは悪い考えです。答えはpageXpageYです。詳細はthisを参照してください。

これが役に立つと思われる方は、ここをクリックしてJSFiddleを試してください。https://jsfiddle.net/h1us1syr/

関連する問題