日期:2014-05-17  浏览次数:20594 次

JS 鼠标相对document的坐标以及HTML元素相对document的坐标

	Number.prototype.NaN0 = function(){
		return isNaN(this)?0:this;//如果this为非数字返回0,否则返回数字
	}
//获取鼠标相对document的坐标
	function getMouseCoord(evt){
		if(evt.pageX && evt.pageY)
			return {x:evt.pageX,y:pageY};
		return {
			x:evt.clientX + document.body.scrollLeft - document.body.clientLeft,
			y:evt.clientY + document.body.scrollTop - document.body.clientTop
		};
	}

//获取HTML元素相对document的坐标
	function getPosition(ele){
		var x = ele.offsetLeft+(ele.curentStyle?(parseInt(ele.curentStyle.borderLeftWidth).NaN0()):0);
		var y = ele.offsetTop+(ele.curentStyle?(parentInt(ele.curentStyle.borderTopWidth).NaN0()):0);
		while(ele.offsetParent){
			ele = ele.offsetParent;
			x+=ele.offsetLeft+(ele.curentStyle?(parseInt(ele.curentStyle.borderLeftWidth).NaN0()):0);
			y+=ele.offsetTop+(ele.curentStyle?(parentInt(ele.curentStyle.borderTopWidth).NaN0()):0);
		}
		return {x:x,y:y};
	}

//获取鼠标相对与点击空件上的坐标
	function getMouseOffset(target,ev){
		var elePosition = getPosition(target);
		var mouseCoord = getMouseCoord(ev);
		return {x:mouseCoord.x-elePosition.x,y:mouseCoord.y-elePosition.y};
	}
?
1 楼 jidifeiyan 2010-11-16  
今天也碰到了这个问题,看了这篇文章解决了,不错。