4

假设我们有一个绑定到它的处理程序<div>mousemove如果鼠标指针进入并围绕 this 移动div,则触发事件。

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

具体来说,<div>必须突出显示,我认为这是一个 UI 缺陷,要求用户稍微移动鼠标以触发突出显示。

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

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

因为是由我没有onmousemove的对象参数化的。event

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

4

2 回答 2

5

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

一个可能看起来像什么的小例子

于 2012-08-21T13:34:47.390 回答
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/grimmertop90/LxT7V/1/

于 2012-08-21T13:58:13.617 回答