最近在跟进以前同事做的一个项目时发现一个问题,当鼠标移动到事件监听区域以外后,事件监听就不起作用了。遂想到用window.captureEvents.但是那样加的话对chorome任然不起作用,打断点以后发现这段代码被执行了,但是当鼠标移动到监听区域以外后p还是不动,请教是不是哪里写的不对?
op.onmousedown = function(ev){
...
if(op.setCapture){
op.setCapture();
}else if(window.captureEvents){ //chorome不起作用
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}
op.onmousemove = mousemove;
op.onmouseup = mouseup;
}
function mousemove(ev)
{
var oEvent = ev || event;
var t = oEvent.clientY-disY;
op.style.top = t +'px';
op_top2=oEvent.clientY;
}
function mouseup()
{
this.onmousemove = null;
this.onmouseup = null;
if(op.releaseCapture){
op.releaseCapture();
}else if(window.releaseEvents){
window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}
...
}
PHP中文网2017-04-10 15:16:02
刚好在处理类似问题,楼上说的没错op.onmousemove = mousemove;换成document.onmousemove = mousemove;
但是在google浏览器或者webkit内核的浏览器中都会说window.captureEvents()过时,将不会起任何作用,但是鼠标离开监听区域还是没问题的,即使出了浏览器