0

这是有效的:http: //jsfiddle.net/9NDXF/1/当我写 onmousemove 时,但这不是:http: //jsfiddle.net/9NDXF/7/当我写 onscroll 时。

我怎样才能让鼠标位置滚动?

4

3 回答 3

1

因为滚动事件没有 pageX 属性。卷轴很烂。这是一篇关于鼠标滚动事件的好文章,以及演示的jsFiddle

“在滚动时获取鼠标位置”的唯一方法是在较早的时间记录它,然后在需要时访问它。不过,我会花很多时间思考为什么你认为这是一个好主意:jsFiddle

var mousePostion = {clientX:0,clientY:0};

function record(e)
{
    mousePostion = {
        clientX: e.clientX,
        clientY: e.clientY
    };
}
function print(e)
{
   document.getElementById("x").value=mousePostion.clientX;
   document.getElementById("y").value=mousePostion.clientY;
}
window.onmousemove=record;
window.onscroll=print;​
于 2012-05-15T18:04:58.537 回答
0

onscroll 是当用户滚动屏幕时。最小化 jsFiddle 所以有一个滚动条,然后用它滚动。您将看到填充的值。“e”未定义。

function test(e)
{
    alert(e);

    var doc=document.documentElement;
    var body=document.body;
    if(e.pageX)
    {
        document.getElementById("x").value=e.pageX;
        document.getElementById("y").value=e.pageY;
    }
    else
    {
        document.getElementById("x").value=e.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);
        document.getElementById("y").value=e.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0);
    }
}
window.onscroll=test;​
于 2012-05-15T18:02:14.427 回答
0

阅读此参考希望对
http://javascriptmagic.blogspot.com/2006/09/getting-scrolling-position-using.html有所帮助

于 2012-05-15T18:09:03.120 回答