滚动时可以用javascript获取鼠标位置吗?

时间:2018-06-01 23:56:40

标签: javascript events mouseevent

我有一个使用window.addEventListener('mousemove', this.mousemoveFn);在文档上获取鼠标位置的codepen设置,但是,如果您开始滚动,则在您再次移动之前,交互将无法与鼠标位置一起使用。所以我的问题是:

有没有办法使用滚动事件监听器获取页面上的当前鼠标位置? window.addEventListener('scroll', callback);

由于使用mousemove事件检索位置,我不确定这是否可行,但是在滚动和移动时让元素与鼠标光标交互会很棒老鼠。

以下是codepen:https://codepen.io/IamBramer/pen/zavoBp

1 个答案:

答案 0 :(得分:0)

首先回答:

  

有没有办法使用事件监听器滚动来获取页面上的当前鼠标位置?

查看MDN wheel中的事件定义:

        var event = {
            // keep a ref to the original event object
            originalEvent: originalEvent,
            target: originalEvent.target || originalEvent.srcElement,
            type: "wheel",
            deltaMode: originalEvent.type == "MozMousePixelScroll" ? 0 : 1,
            deltaX: 0,
            deltaY: 0,
            deltaZ: 0,
            preventDefault: function() {
                originalEvent.preventDefault ?
                    originalEvent.preventDefault() :
                    originalEvent.returnValue = false;
            }
        };

此对象中没有鼠标位置的属性(考虑滑动,无位置,方向向量)。

现在回答:

  

元素在滚动时以及移动鼠标时与鼠标光标交互

您应该直接在元素上使用mouseenter事件和mouseleave事件,甚至是mouseover事件。

浏览器可以让您在滚动或移动时知道鼠标是否进入,离开,超过元素。

作为评论,鼠标事件是常识事件,如果没有任何反应(鼠标不移动),没有任何反应,没有移动事件。 实际上,任何hook都可以在不通知浏览器的情况下更改鼠标的位置(接收较低级别的事件),因此不会做出反应。