触发鼠标移动鼠标的当前位置

时间:2012-08-21 13:31:17

标签: javascript

假设我们有<div>绑定了mousemove处理程序。如果鼠标指针进入并移动此div,则会触发该事件。

但是,我正在处理一个丰富的Web应用程序,其中<div>在屏幕上移动,出现和消失......所以可能会发生鼠标指针下方出现<div>。在这种情况下,不会触发mousemove。但是,我需要它。 (请注意,将mousemove替换为mouseover不会改变此行为。)

具体来说,<div>必须突出显示,我认为它是一个UI漏洞,要求用户进行轻微的鼠标移动才能触发突出显示。

是否可以以编程方式触发mousemove事件?我不是说

document.getElementById('mydiv').onmousemove();

因为onmousemoveevent对象进行参数化,这是我没有的。

是否可以使浏览器的行为就好像在当前鼠标的位置上触发onmousemove一样(尽管实际上鼠标没有移动)?

2 个答案:

答案 0 :(得分:5)

您可以修改mousemove以使用当前鼠标坐标保持状态变量,并使用该信息执行碰撞检测,您可以在鼠标移动和移动div时调用它。

A little example of what that might look like

答案 1 :(得分:4)

你实际上可以创建一个mousemove事件对象来传入,使用类似这样的东西:

window.onload = function () {
    document.getElementById("test").onmousemove = function(e) { console.log(e); };
    document.getElementById("test").onclick = function(e) { 
        var e = document.createEvent('MouseEvents'); 
        e.initMouseEvent('mousemove',true,true,document.defaultView,<detail>,<screenX>,<screenY>,<mouseX>,<mouseY>,false,false,false,false,<button>,null);
        this.onmousemove(e); 
    };
};

当然,在这里我点击一下即可点击它,但你可以在你想要的任何事件上进行,例如当你的div变得可见时,检查鼠标是否在其中。您只需要确保参数正确,并且需要自己跟踪鼠标位置。另外,我认为IE存在一些差异。这是我的来源:http://chamnapchhorn.blogspot.com/2008/06/artificial-mouse-events-in-javascript.html。他添加了一些额外的代码来解释它。

这是一个小玩意儿。 http://jsfiddle.net/grimertop90/LxT7V/1/