一段代码,IE可以,firefox怎么不行?div 拖动

jarodzhao 2009-03-03 01:58:37
        var x,y;
function mousedown(obj)
{
obj.onmousemove = mousemove;
obj.onmouseup = mouseup;

oEvent = window.event ? window.event : arguments.callee.caller.arguments[0];
x = oEvent.clientX;
y = oEvent.clientY;
}
function mousemove()
{
oEvent = window.event ? window.event : arguments.callee.caller.arguments[0];
var _top = oEvent.clientY - y + parseInt(this.style.top) + "px"; var _left = oEvent.clientX - x + parseInt(this.style.left) +"px";
this.style.top = _top;
this.style.left = _left;
x = oEvent.clientX;
y = oEvent.clientY
}
function mouseup()
{
this.onmousemove = null;
this.onmouseup = null;
}
...全文
129 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sherry521 2009-03-03
  • 打赏
  • 举报
回复
关键在这个event,火狐是不支持全局的event,所以用的话要这么写:

var x,y;
function mousedown(event,obj)
{
obj.onmousemove = mousemove;
obj.onmouseup = mouseup;

oEvent = window.event ? window.event : event;
x = oEvent.clientX;
y = oEvent.clientY;
}
function mousemove(event)
{
oEvent = window.event ? window.event : event;
var _top = oEvent.clientY - y + parseInt(this.style.top) + "px";
var _left = oEvent.clientX - x + parseInt(this.style.left) +"px";
this.style.top = _top;
this.style.left = _left;
x = oEvent.clientX;
y = oEvent.clientY
}
function mouseup()
{
this.onmousemove = null;
this.onmouseup = null;
}


然后在触发函数的地方传入event,如:<input type="button" onClick="move(event)">
hzrui 2009-03-03
  • 打赏
  • 举报
回复
oEvent = window.event ? window.event : event;
这是有问题的
oEvent = window.event ? window.event : arguments[0];
或是
oEvent = window.event || arguments[0];

或是
function mousemove(e)
{
oEvent = e|| window.event;
}

  • 打赏
  • 举报
回复
告诉你思路修改吧
oEvent = window.event ? window.event : this.obj;
红色部分,FF下读不到了
jarodzhao 2009-03-03
  • 打赏
  • 举报
回复
不行啊,IE 没什么问题,ff 还是纹丝不动~
  • 打赏
  • 举报
回复
function mousedown(obj)
{
this.obj=obj;
obj.onmousemove = mousemove;
obj.onmouseup = mouseup;

oEvent = window.event ? window.event : obj;
x = oEvent.clientX;
y = oEvent.clientY;
}
function mousemove()
{
oEvent = window.event ? window.event : this.obj;
var _top = oEvent.clientY - y + parseInt(this.style.top) + "px";
var _left = oEvent.clientX - x + parseInt(this.style.left) +"px";
this.style.top = _top;
this.style.left = _left;
x = oEvent.clientX;
y = oEvent.clientY
}
function mouseup()
{
this.onmousemove = null;
this.onmouseup = null;
}


试试吧
jarodzhao 2009-03-03
  • 打赏
  • 举报
回复
抱歉,发贴主题的代码自己调试过了
原来的代码是下面这段

        var x,y;
function mousedown(obj)
{
obj.onmousemove = mousemove;
obj.onmouseup = mouseup;

oEvent = window.event ? window.event : event;
x = oEvent.clientX;
y = oEvent.clientY;
}
function mousemove()
{
oEvent = window.event ? window.event : event;
var _top = oEvent.clientY - y + parseInt(this.style.top) + "px";
var _left = oEvent.clientX - x + parseInt(this.style.left) +"px";
this.style.top = _top;
this.style.left = _left;
x = oEvent.clientX;
y = oEvent.clientY
}
function mouseup()
{
this.onmousemove = null;
this.onmouseup = null;
}

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧