javascript - 制作拖拽效果在chorome下使用window.captureEvents,但是发现不起作用,该怎么破?
怪我咯
怪我咯 2017-04-10 15:14:02
0
2
441

最近在跟进以前同事做的一个项目时发现一个问题,当鼠标移动到事件监听区域以外后,事件监听就不起作用了。遂想到用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);
        }
    ...
    }
怪我咯
怪我咯

走同样的路,发现不同的人生

reply all(2)
伊谢尔伦

把 mousemove 跟 mouseup 绑定到 document。

洪涛

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

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template