IE:event.y和event.x FF下面麻烦一点,ff必须在事件发生的现场捕获事件,所以要把event做为参数传递到处理事件的代码中 比如<div onclick="fnClick(this,event)"></div> function fnClick(obj,e){ alert(e.pageX+','+e.pageY); }
我用 var left = 0; var top = 0; while (obj != document.body) { alert(obj.offsetParent.tagName.toLowerCase()+obj.offsetLeft); left += obj.offsetLeft; top += obj.offsetTop; obj = obj.offsetParent; }这样做,,如果不设*{margin:0;padding:0}的话,获取位置会出错
顶一下,刚试了下 var left = 0; var top = 0; while (!obj || obj != document.body) { left += obj.offsetLeft; top += obj.offsetTop; obj = obj.offsetParent; } if (isIE && obj) { left += obj.offsetLeft; top += obj.offsetTop; }这样可以解决body有margin和padding的情况。 刚又把该元素放在其他的position元素中,位置又乱了。
FF下面麻烦一点,ff必须在事件发生的现场捕获事件,所以要把event做为参数传递到处理事件的代码中
比如<div onclick="fnClick(this,event)"></div>
function fnClick(obj,e){
alert(e.pageX+','+e.pageY);
}
var left = 0;
var top = 0;
while (obj != document.body) {
alert(obj.offsetParent.tagName.toLowerCase()+obj.offsetLeft);
left += obj.offsetLeft;
top += obj.offsetTop;
obj = obj.offsetParent;
}这样做,,如果不设*{margin:0;padding:0}的话,获取位置会出错
var left = 0;
var top = 0;
while (!obj || obj != document.body) {
left += obj.offsetLeft;
top += obj.offsetTop;
obj = obj.offsetParent;
}
if (isIE && obj) {
left += obj.offsetLeft;
top += obj.offsetTop;
}这样可以解决body有margin和padding的情况。
刚又把该元素放在其他的position元素中,位置又乱了。