js层拖动

来源:互联网 发布:plc编程学习网站 编辑:程序博客网 时间:2024/05/16 09:44
<html>   <head>      <script>       <!--          function   beginDrag(elementToDrag,event){          //计算元素原左上角与鼠标的距离          //moveHandler要这值          /*计算对象与鼠标之间的距离,x,y坐标*/          var   delatX=event.clientX-parseInt(elementToDrag.style.left);          var   delatY=event.clientY-parseInt(elementToDrag.style.top);       //注册响应mousemove和mousedown事件后的mouseup事件的处理程序              if(document.addEventListener){     //2级DOM事件模型                  //注册捕捉事件处理程序                  document.addEventListener("mousemove",moveHandler,true); //添加事件,并设置事件的相应顺序 true为先执行 moveHandler()                  document.addEventListener("mouseup",upHandler,true);              }              else if(document.attachEvent){   //IE5+   的事件模型                  /*在IE事件模型中,我们不能捕捉事件,所以只有当事件起泡到这些处理程序时,                  它们才被触发.   假设不存在干涉元素,   处理了事件后它们就停止传播*/                  document.attachEvent("onmousemove",moveHandler);                  document.attachEvent("onmouseup",upHandler);              }              else{                  //IE4事件模型                  //IE4我们不能使用attachEvent方法,所以存储了以前赋予的处理                  //程序后,直接赋予新的事件处理程序,这样可以恢复旧的处理程序.                  //注意,这样依赖于事件起泡.                  var oldmovehandler=document.onmousemove;                  var olduphandler=document.onmouseup;                  document.onmousemove=moveHandler;                  document.onmouseup=upHandler;              }              //我们处理了该事件,不要再让其他元素看见.              if(event.stopPropagation)event.stopPropagation();   //2   级DOM              else event.cancelBubble=true; //IE              //下面禁止执行默认动作              if(event.preventDefault)event.preventDefault();     //2级DOM              else event.returnValue=false; //IE              /*这是元素被拖动时捕捉mousemove事件的处理程序.              * 它负责移动元素              */              function moveHandler(e){                  if(!e)e=window.event; //IE事件模型;               //把元素移动到鼠标当前的位置,根据初始鼠标点击的偏移量进行调整                  elementToDrag.style.left=(e.clientX-delatX)+"px"; //e.clientX 鼠标位置                  elementToDrag.style.top=(e.clientY-delatY)+"px";                  //不要再让其他元素看到该事件.                  if(e.stopPropagation)e.stopPropagation();     //2级DOM                  else e.cancelBubble=true; //IE              }              /*     这是捕捉拖移结束最后发生的mouseup事件的处理程序.                */              function upHandler(e){                  if(!e)   e=window.event; //IE事件模型.                  //注销捕捉事件程序.                  if(document.removeEventListener){//DOM事件模型                      document.removeEventListener("mouseup",upHandler,true);                      document.removeEventListener("mousemove",moveHandler,true);                 }                  else if(document.detachEvent){//IE5+事件模型                      document.detachEvent("onmouseup",upHandler);                      document.detachEvent("onmousemove",moveHandler);                  }                  else{//IE事件模型                      document.onmouseup=olduphandler;                      document.onousemove=oldmovehandler;                  }                  //不要再让事件进一步传播.                  if(e.stopPropagation)   e.stopPropagation();     //2级DOM                  else e.cancelBubble = true; //IE             }          }          -->      </script>   </head><body>      <img src="csdn.gif" style="position:absolute;left:0px;top:0px;" onmousedown="beginDrag(this,event);"></body></html>
原创粉丝点击