您的位置:首页 > Web前端 > JavaScript

[转载]JS拖动技术--- 关于setCapture

2011-09-03 11:52 531 查看
<script type="text/javascript">

<!--

window.onload=function(){

objDiv = document.getElementByIdx('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" >drag me <div>

--------------------------------------

setCapture
的意思就是设置一个对象的方法被触发的范围,或者作用域。

如果不设置,则div只在当前窗口内被触发。如果设置,则在整个浏览器范围内被触发,也就是可以拖到浏览器外面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: