12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- var Drag={
- "obj":null,
- "init":function(handle, dragBody, e){
- if (e == null) {
- handle.onmousedown=Drag.start;
- }
- handle.root = dragBody;
- if(isNaN(parseInt(handle.root.style.left)))handle.root.style.left="0px";
- if(isNaN(parseInt(handle.root.style.top)))handle.root.style.top="0px";
- handle.root.onDragStart=new Function();
- handle.root.onDragEnd=new Function();
- handle.root.onDrag=new Function();
- if (e !=null) {
- var handle=Drag.obj=handle;
- e=Drag.fixe(e);
- var top=parseInt(handle.root.style.top);
- var left=parseInt(handle.root.style.left);
- handle.root.onDragStart(left,top,e.pageX,e.pageY);
- handle.lastMouseX=e.pageX;
- handle.lastMouseY=e.pageY;
- document.onmousemove=Drag.drag;
- document.onmouseup=Drag.end;
- }
- },
- "start":function(e){
- var handle=Drag.obj=this;
- e=Drag.fixEvent(e);
- var top=parseInt(handle.root.style.top);
- var left=parseInt(handle.root.style.left);
- //alert(left)
- handle.root.onDragStart(left,top,e.pageX,e.pageY);
- handle.lastMouseX=e.pageX;
- handle.lastMouseY=e.pageY;
- document.onmousemove=Drag.drag;
- document.onmouseup=Drag.end;
- return false;
- },
- "drag":function(e){
- e=Drag.fixEvent(e);
-
- var handle=Drag.obj;
- var mouseY=e.pageY;
- var mouseX=e.pageX;
- var top=parseInt(handle.root.style.top);
- var left=parseInt(handle.root.style.left);
-
- if(document.all){Drag.obj.setCapture();}else{e.preventDefault();};//作用是将所有鼠标事件捕获到handle对象,对于firefox,以用preventDefault来取消事件的默认动作:
- var currentLeft,currentTop;
- currentLeft=left+mouseX-handle.lastMouseX;
- currentTop=top+(mouseY-handle.lastMouseY);
- handle.root.style.left=currentLeft +"px";
- handle.root.style.top=currentTop+"px";
- handle.lastMouseX=mouseX;
- handle.lastMouseY=mouseY;
- handle.root.onDrag(currentLeft,currentTop,e.pageX,e.pageY);
- return false;
- },
- "end":function(){
- if(document.all){Drag.obj.releaseCapture();};//取消所有鼠标事件捕获到handle对象
- document.onmousemove=null;
- document.onmouseup=null;
- Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style.left),parseInt(Drag.obj.root.style.top));
- Drag.obj=null;
- },
- "fixEvent":function(e){//格式化事件参数对象
- var sl = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
- var st = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
- if(typeof e=="undefined")e=window.event;
- if(typeof e.layerX=="undefined")e.layerX=e.offsetX;
- if(typeof e.layerY=="undefined")e.layerY=e.offsetY;
- if(typeof e.pageX == "undefined")e.pageX = e.clientX + sl - document.body.clientLeft;
- if(typeof e.pageY == "undefined")e.pageY = e.clientY + st - document.body.clientTop;
- return e;
- }
- };
|