实现最简单的拖放操作,拖放对象不随鼠标动,只是松开鼠标后对象移动到鼠标位置,以下代码在IE中正常,但在Firefox等其他浏览器中
不起作用,请问各位老师是为什么?代码如下:
Web.UI.Schedule = function(element) {
Web.UI.Schedule.initializeBase(this, [element]); this.x;
this.y;
this.clientx;
this.clienty;
this.dragID = null;
this._this = null;
};Web.UI.Schedule.prototype =
{
initialize: function() {
Web.UI.Schedule.callBaseMethod(this, 'initialize');
_this = this; var divs = document.getElementById("divmain").getElementsByTagName("div"); for (var div in divs) {
if (div.match("Event") != null) {
$addHandlers($get(div), { mousedown: this._onMouseDown });
}
} $addHandlers($get('tablemain'), { mouseup: this._onMouseUp }); document.onselectstart = function() { return false; }
}, _onMouseDown: function(e) {
_this.x = parseInt(e.target.style.left);
_this.y = parseInt(e.target.style.top);
_this.clientx = e.clientX - e.offsetX + (document.documentElement.scrollLeft ?
document.documentElement.scrollLeft :
document.body.scrollLeft);
_this.clienty = e.clientY - e.offsetY + (document.documentElement.scrollTop ?
document.documentElement.scrollTop :
document.body.scrollTop);
if (e.target.id.match("Event") != null) {
_this.dragID = e.target;
}
}, _onMouseUp: function(e) {
var e = e ? e : event; if (_this.dragID != null) { var tx = e.clientX + (document.documentElement.scrollLeft ?
document.documentElement.scrollLeft :
document.body.scrollLeft);
var ty = e.clientY + (document.documentElement.scrollTop ?
document.documentElement.scrollTop :
document.body.scrollTop); var eventleft = _this.x + (tx - _this.clientx);
var eventtop = _this.y + (ty - _this.clienty);
if (eventleft != -1 && eventtop != -1) {
if (eventleft != _this.x || eventtop != _this.y) {
_this.dragID.style.left = eventleft;
_this.dragID.style.top = eventtop;
}
}
_this.dragID = null;
}
}, clearDragId: function() {
_this.dragID = null;
}
};
不起作用,请问各位老师是为什么?代码如下:
Web.UI.Schedule = function(element) {
Web.UI.Schedule.initializeBase(this, [element]); this.x;
this.y;
this.clientx;
this.clienty;
this.dragID = null;
this._this = null;
};Web.UI.Schedule.prototype =
{
initialize: function() {
Web.UI.Schedule.callBaseMethod(this, 'initialize');
_this = this; var divs = document.getElementById("divmain").getElementsByTagName("div"); for (var div in divs) {
if (div.match("Event") != null) {
$addHandlers($get(div), { mousedown: this._onMouseDown });
}
} $addHandlers($get('tablemain'), { mouseup: this._onMouseUp }); document.onselectstart = function() { return false; }
}, _onMouseDown: function(e) {
_this.x = parseInt(e.target.style.left);
_this.y = parseInt(e.target.style.top);
_this.clientx = e.clientX - e.offsetX + (document.documentElement.scrollLeft ?
document.documentElement.scrollLeft :
document.body.scrollLeft);
_this.clienty = e.clientY - e.offsetY + (document.documentElement.scrollTop ?
document.documentElement.scrollTop :
document.body.scrollTop);
if (e.target.id.match("Event") != null) {
_this.dragID = e.target;
}
}, _onMouseUp: function(e) {
var e = e ? e : event; if (_this.dragID != null) { var tx = e.clientX + (document.documentElement.scrollLeft ?
document.documentElement.scrollLeft :
document.body.scrollLeft);
var ty = e.clientY + (document.documentElement.scrollTop ?
document.documentElement.scrollTop :
document.body.scrollTop); var eventleft = _this.x + (tx - _this.clientx);
var eventtop = _this.y + (ty - _this.clienty);
if (eventleft != -1 && eventtop != -1) {
if (eventleft != _this.x || eventtop != _this.y) {
_this.dragID.style.left = eventleft;
_this.dragID.style.top = eventtop;
}
}
_this.dragID = null;
}
}, clearDragId: function() {
_this.dragID = null;
}
};
var scrollX=0;
var scrollY=0;
if(document.all){ //IE
if(!document.documentElement.scrollLeft)
scrollX=document.body.scrollLeft;
else
scrollX=document.documentElement.scrollLeft;
if(!document.documentElement.scrollTop)
scrollY=document.body.scrollTop;
else
scrollY=document.documentElement.scrollTop;
}
else{
scrollX=window.pageXOffset;
scrollY=window.pageYOffset;
}
var eventtop = _this.y + (ty - _this.clienty);
if (eventleft != -1 && eventtop != -1) {
if (eventleft != _this.x || eventtop != _this.y) {
_this.dragID.style.left = eventleft;
_this.dragID.style.top = eventtop;ff下要加px >>> this.dragID.style.left=eventleft+'px';