object.setCapture() 当一个object的被 setCapture 后,他的方法将会被继承到整个文档进行捕获。
当不需要把方法继承到整个文档捕获时,要用 object.releaseCapture()
Mozilla 也有类似的功能,方法稍微不同
window.captureEvents(Event.eventType)
window.releaseEvents(Event.eventType)
Event 是Mozilla特殊的一个object.
eventType 包括: Abort, Blur, Click, Change, DblClick, DragDrop, Error, Focus, KeyDown, KeyPress, KeyUp, Load, MouseDown, MouseMove, MouseOut, MouseOver, MouseUp, Move, Reset, Resize, Select, Submit, Unload.
=====================
1. setCapture() 设置属于当前文档的对象的鼠标捕捉。
2. event.offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。
3. event.offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标。
4. releaseCapture() 释放当前文档中对象的鼠标捕捉。
5. scrollLeft 设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离。
6. scrollTop 设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离。
======================
http://www.cnblogs.com/cmalaya/archive/2007/05/29/764339.aspx
- <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" >drag me <div>