JS拖动技术--- 关于setCapture

<script type="text/javascript">
<!--
window.onload=function(){
  objDiv = document.getElementById('drag');
  drag(objDiv);
};

function drag(dv){
  dv.onmousedown=function(e){
      var d=document;
      e = e || window.event;
      var x= e.layerX || e.offsetX;
      var y= e.layerY || e.offsetY;
//设置捕获范围
      if(dv.setCapture){
dv.setCapture();
      }else if(window.captureEvents){
window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);
      }

      d.onmousemove=function(e){
           e= e || window.event;
           if(!e.pageX)e.pageX=e.clientX;
           if(!e.pageY)e.pageY=e.clientY;
           var tx=e.pageX-x;
           var ty=e.pageY-y;
           dv.style.left=tx;
           dv.style.top=ty;
      };

      d.onmouseup=function(){
//取消捕获范围
           if(dv.releaseCapture){
              dv.releaseCapture();
           }else if(window.captureEvents){
              window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
           }
//清除事件
          d.onmousemove=null;
          d.onmouseup=null;
      };
   };
}
//-->
</script>
<div id="drag" style="position:absolute;left:12px;top:24px;width:100;height:150;border:1px solid #000000;z-index:1;background:#eeeeee">drag me</div>
--------------------------------------
setCapture 的意思就是设置一个对象的方法被触发的范围,或者作用域。
如果不设置,则div只在当前窗口内被触发。如果设置,则在整个浏览器范围内被触发,也就是可以拖到浏览器外面

上一篇:search in 2d matrix and serach minimum in rotated array


下一篇:C#Linq技术中SelectMany(...)函数的内部实现的伪代码