Javascript คลาสการลาก
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-06-11 16:31:49
<HTML>
<หัว>
<SCRIPT LANGUAGE="จาวาสคริปต์">
-
var ลาก = {
SX : 0,
ไซ : 0,
เช่น : 0,
เฮ้ : 0,
ลักซ์ : 0,
ต่ำ : 0,
ออฟเซ็ตX : 0,
ชดเชย Y : 0,
cdom : null,
DragAble : เท็จ,
DragFun : null,
tempDrag : ฟังก์ชั่น(){
Drag.drag.call(ลาก);
-
แคช : {},
putCache : ฟังก์ชั่น (คีย์, v) {
this.cache[คีย์] = v;
-
getCache : ฟังก์ชั่น (คีย์) {
กลับ this.cache [คีย์];
-
DragStart : function(dfun,fn){
พยายาม{
ถ้า(!this.dragAble){
this.cdom = event.srcElement?event.srcElement:event.target;
this.cdom.setCapture (จริง);
this.sx = event.screenX;
this.sy = event.screenY;
this.ex = event.screenX;
this.ey = event.screenY;
this.lx = event.screenX;
this.ly = event.screenY;
this.dragAble = จริง;
this.dragFun = dfun?dfun:null;
ถ้า(fn){fn();}
this.cdom.attachEvent("onmousemove",Drag.tempDrag);
-
} จับ (จ) {
this.dragEnd();
-
-
ลาก : function(){
พยายาม{
ถ้า(this.dragAble){
this.ex = event.screenX;
this.ey = event.screenY;
this.offsetX = this.ex - this.lx;
this.offsetY = this.ey - this.ly;
ถ้า(this.dragFun){this.dragFun();}
this.lx = this.ex;
this.ly = this.ey;
-
-
จับ(จ){
นี้.dragEnd(null);
-
-
DragEnd : ฟังก์ชั่น(fn){
ถ้า(this.dragAble){
this.cdom.detachEvent("onmousemove",Drag.tempDrag);
นี้.cdom.releaseCapture();
this.ex = event.screenX;
this.ey = event.screenY;
this.dragAble = เท็จ;
ถ้า(fn){fn();}
-
นี้.releaseDrag();
-
releaseDrag : ฟังก์ชั่น(){
นี่.ex = 0;
นี่.ey = 0;
นี่.sx = 0;
this.sy = 0;
this.cdom = โมฆะ;
this.dragAble = เท็จ;
this.dragFun = โมฆะ;
นี้.แคช = {};
-
-
ฟังก์ชั่นเริ่มต้น () {
var d = Drag.cdom.cloneNode(จริง);
var pos = getBodyPos(Drag.cdom);
ด้วย(d.สไตล์){
ตำแหน่ง = "สัมบูรณ์";
ซ้าย=pos.left;
ด้านบน=pos.top;
filter='Alpha(Opacity="30")' ;
-
Drag.putCache("alo",d);
document.body.appendChild(ง);
-
ฟังก์ชั่น ไอเอ็นจี(){
var offx = Drag.offsetX;
var offy = Drag.offsetY;
var to = Drag.getCache("alo");
var l = to.offsetLeft;
var t = to.offsetTop;
ด้วย(to.style){
ซ้าย=l+offx;
ด้านบน=t+offy;
-
-
ฟังก์ชั่นสิ้นสุด () {
var cdom = Drag.cdom;
var alo = Drag.getCache("alo");
ด้วย(cdom.style)
-
ซ้าย=alo.offsetซ้าย;
ด้านบน=alo.offsetTop;
ตำแหน่ง = "สัมบูรณ์";
-
ถ้า(อโล)
document.body.removeChild(อโล);
-
ฟังก์ชั่น getBodyPos (obj) {
พยายาม{
var l = obj.offsetLeft;
var t = obj.offsetTop;
ในขณะที่(obj.parentElement != document.body){
obj = obj.parentElement;
var tl = obj.offsetLeft;
var tt = obj.offsetTop;
ล. += ทล;
เสื้อ += ทีท;
-
กลับ {ซ้าย: l, บน: t};
} จับ (จ) {
การแจ้งเตือน (อีเมล);
-
-
-
</สคริปต์>
</HEAD>
<ร่างกาย>
<div style="border:solid 1 #7FFFD4;width:300;height:150;พื้นหลัง:#3399FF;cursor:move;" onmousedown="Drag.dragStart(ing,start)" onmouseup="Drag.dragEnd(end)">
ทดสอบการลากวัตถุ
</div>
</ร่างกาย>
</HTML>