2016-10-11 18 views
0

多document.onmousemove事件我想一些帮助,一个javascript project.What我想要做的,是有启动时鼠标移动两个功能,但只有其中一个屡试不爽不工作

例如,如果我这样做

var mouseX; 
var mouseY; 

document.onmousemove = captureMouse; 
document.onmousemove = function(){console.log("check");} 
function captureMouse(ev){ 
ev = ev || window.event; 
var mousePos= mouseCoords(ev); 
mouseX=mousePos.x; 
mouseY=mousePos.y; 
document.getElementById("coordinput").value=mouseX; 
return mousePos;} 

function mouseCoords(ev){ 

if(ev.pageX || ev.pageY){ 

return {x:ev.pageX,y:ev.pageY}; 


} 

return{ 
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, 
y:ev.clientY + document.body.scrollTop - document.body.clientTop 
}; 

} 

如果我删除了第二document.onmousemove,第一工作正常,并且改变输入字段

,如果我离开它存在的价值,它不断地写检查像它应该(这是为了调试目的),但第一个一个不起作用

关于如何使多个鼠标事件工作的任何想法?

+1

如JavaScript是连续的,所以只分配到事件的最后一个函数将被调用。为了检查第二个函数function(){console.log(“check”);},可以在第一个函数captureMouse中使用它; – Pranay

+0

好的,谢谢你的回答。我认为每个document.onmousemove都添加了一些标志,所以当你移动鼠标时,它会执行两个,不仅是最后一个。问题是我打算有一个不同的功能来代替控制台.log所以我真的需要让他们分开,并捕捉鼠标只有在那里不断更新两个坐标 – rexxar2

回答

1

使用document.addEventListener('mousemove', yourCb);它允许多个处理程序

+0

这实际上似乎工作。如果它不是一个麻烦,请你解释为什么这个工程,但我的代码不?我想document.onmousemove的作品就像在html元素上设置onmousemove(),所以我基本上覆盖它? – rexxar2

+0

因为smth.onmousemove - 回调,并且每次都覆盖它。 addEventListener只使用smth类似内部回调数组 –

+0

非常感谢你 – rexxar2