1

ドキュメント本文で onmousemove と onscroll の addEventListener を実行してカーソル位置を取得するスクリプトがあります。onmousemove イベントは正常に動作しますが (クライアント + スクロール)、onscroll イベントが発生すると、clientX/Y は代わりに scrollTop/Left 値を継承するようです (スクロールのみ)。これを回避する方法はありますか?

clickDocument = (document.documentElement != undefined && document.documentElement.clientHeight != 0) ? document.documentElement : document.body;

var posx = 0;
var posy = 0;
if (e.pageX || e.pageY)     {
    posx = e.pageX;
    posy = e.pageY;
}
else if (e.clientX || e.clientY)    {
    posx = e.clientX;
    posy = e.clientY;
}

var scrollx = window.pageXOffset == undefined ? clickDocument.scrollLeft : window.pageXOffset;
var scrolly = window.pageYOffset == undefined ? clickDocument.scrollTop : window.pageYOffset;
4

1 に答える 1

0

IE ブラウザーのバージョンと doctype によっては、clickDocument.body.scrollTop またはclickDocument.documentElement.scrollTop.

(出典: http://javascript.about.com/library/blmousepos.htm )

于 2010-04-10T16:07:28.847 に答える