假设我们有<div>
绑定了mousemove
处理程序。如果鼠标指针进入并移动此div
,则会触发该事件。
但是,我正在处理一个丰富的Web应用程序,其中<div>
在屏幕上移动,出现和消失......所以可能会发生鼠标指针下方出现<div>
。在这种情况下,不会触发mousemove
。但是,我需要它。 (请注意,将mousemove
替换为mouseover
不会改变此行为。)
具体来说,<div>
必须突出显示,我认为它是一个UI漏洞,要求用户进行轻微的鼠标移动才能触发突出显示。
是否可以以编程方式触发mousemove
事件?我不是说
document.getElementById('mydiv').onmousemove();
因为onmousemove
由event
对象进行参数化,这是我没有的。
是否可以使浏览器的行为就好像在当前鼠标的位置上触发onmousemove
一样(尽管实际上鼠标没有移动)?
答案 0 :(得分:5)
您可以修改mousemove
以使用当前鼠标坐标保持状态变量,并使用该信息执行碰撞检测,您可以在鼠标移动和移动div时调用它。
答案 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/