top.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. var Drag={
  2. "obj":null,
  3. "init":function(handle, dragBody, e){
  4. if (e == null) {
  5. handle.onmousedown=Drag.start;
  6. }
  7. handle.root = dragBody;
  8. if(isNaN(parseInt(handle.root.style.left)))handle.root.style.left="0px";
  9. if(isNaN(parseInt(handle.root.style.top)))handle.root.style.top="0px";//ȷ����4�ܹ�ȡ��topֵ
  10. handle.root.onDragStart=new Function();
  11. handle.root.onDragEnd=new Function();
  12. handle.root.onDrag=new Function();
  13. if (e !=null) {
  14. var handle=Drag.obj=handle;
  15. e=Drag.fixe(e);
  16. var top=parseInt(handle.root.style.top);
  17. var left=parseInt(handle.root.style.left);
  18. handle.root.onDragStart(left,top,e.pageX,e.pageY);
  19. handle.lastMouseX=e.pageX;
  20. handle.lastMouseY=e.pageY;
  21. document.onmousemove=Drag.drag;
  22. document.onmouseup=Drag.end;
  23. }
  24. },
  25. "start":function(e){
  26. var handle=Drag.obj=this;
  27. e=Drag.fixEvent(e);
  28. var top=parseInt(handle.root.style.top);
  29. var left=parseInt(handle.root.style.left);
  30. handle.root.onDragStart(left,top,e.pageX,e.pageY);
  31. handle.lastMouseX=e.pageX;
  32. handle.lastMouseY=e.pageY;
  33. document.onmousemove=Drag.drag;
  34. document.onmouseup=Drag.end;
  35. return false;
  36. },
  37. "drag":function(e){//�����thisΪdocument �����϶�����ֻ�ܱ�����Drag.obj��
  38. e=Drag.fixEvent(e);
  39. var handle=Drag.obj;
  40. var mouseY=e.pageY;
  41. var mouseX=e.pageX;
  42. var top=parseInt(handle.root.style.top);
  43. var left=parseInt(handle.root.style.left);//�����top��left��handle.root���������߿���ϱ߾����߾�
  44. var currentLeft,currentTop;
  45. currentLeft=left+mouseX-handle.lastMouseX;
  46. currentTop=top+(mouseY-handle.lastMouseY);
  47. //��һ˲����ϱ߾���������}��˲���ƶ��ľ��� �õ����ڵ��ϱ߾�
  48. handle.root.style.left=currentLeft+"px";
  49. handle.root.style.top=currentTop+"px";
  50. handle.lastMouseX=mouseX;
  51. handle.lastMouseY=mouseY;
  52. //������һ˲������ֵ ������һ�μ���λ��
  53. handle.root.onDrag(currentLeft,currentTop,e.pageX,e.pageY);//���������Ӧ�ĺ���
  54. return false;
  55. },
  56. "end":function(){
  57. document.onmousemove=null;
  58. document.onmouseup=null;
  59. Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style.left),parseInt(Drag.obj.root.style.top));
  60. Drag.obj=null;
  61. },
  62. "fixEvent":function(e){//��ʽ���¼��������
  63. if(typeof e=="undefined")e=window.event;
  64. if(typeof e.layerX=="undefined")e.layerX=e.offsetX;
  65. if(typeof e.layerY=="undefined")e.layerY=e.offsetY;
  66. if(typeof e.pageX == "undefined")e.pageX = e.clientX + document.body.scrollLeft - document.body.clientLeft;
  67. if(typeof e.pageY == "undefined")e.pageY = e.clientY + document.body.scrollTop - document.body.clientTop;
  68. return e;
  69. }
  70. };