首页 > 制作拖拽效果在chorome下使用window.captureEvents,但是发现不起作用,该怎么破?

制作拖拽效果在chorome下使用window.captureEvents,但是发现不起作用,该怎么破?

最近在跟进以前同事做的一个项目时发现一个问题,当鼠标移动到事件监听区域以外后,事件监听就不起作用了。遂想到用window.captureEvents.但是那样加的话对chorome任然不起作用,打断点以后发现这段代码被执行了,但是当鼠标移动到监听区域以外后div还是不动,请教是不是哪里写的不对?

oDiv.onmousedown = function(ev){
        ...
        if(oDiv.setCapture){
            oDiv.setCapture();
        }else if(window.captureEvents){    //chorome不起作用
            window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
        }
        oDiv.onmousemove = mousemove;
        oDiv.onmouseup = mouseup;
    }
    function mousemove(ev)
    {
        var oEvent = ev || event;
        var t = oEvent.clientY-disY;
        oDiv.style.top = t +'px';
        oDiv_top2=oEvent.clientY;
    }
    function mouseup()
    {
        this.onmousemove = null;
        this.onmouseup = null;
        if(oDiv.releaseCapture){
            oDiv.releaseCapture();
        }else if(window.releaseEvents){
            window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
        }
    ...
    }

刚好在处理类似问题,楼上说的没错oDiv.onmousemove = mousemove;换成document.onmousemove = mousemove;
但是在google浏览器或者webkit内核的浏览器中都会说window.captureEvents()过时,将不会起任何作用,但是鼠标离开监听区域还是没问题的,即使出了浏览器


把 mousemove 跟 mouseup 绑定到 document。

【热门文章】
【热门文章】