搜尋

首頁  >  問答  >  主體

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

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

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:16:02

    把 mousemove 跟 mouseup 绑定到 document。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-10 15:16:02

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

    回覆
    0
  • 取消回覆