解决方法
getBoundingClientRect()是您的朋友,并且支持所有浏览器的最新版本(Firefox 3,Safari 4,Chrome,Opera 9.5,IE 5).然而,它将给出相对于视口而不是页面的坐标,因此您需要添加文档的滚动量:
function getPageTopLeft(el) { var rect = el.getBoundingClientRect(); var docEl = document.documentElement; return { left: rect.left + (window.pageXOffset || docEl.scrollLeft || 0),top: rect.top + (window.pageYOffset || docEl.scrollTop || 0) }; }