最近在做智能下拉菜单时,需要获取当前输入框的真实坐标,使菜单能够准确定位. 这类的代码很多,但基本上都忽略了对document.body滚动条和父控件包含滚动条的的处理. 以下代码能够很准确的获取这个控件的真实坐标.
var _left = parseInt(_object.offsetLeft, 10); var _top = parseInt(_object.offsetTop, 10); while(_object = _object.offsetParent) { _left += parseInt(_object.offsetLeft, 10); _top += parseInt(_object.offsetTop, 10); if(_object != document.body) { _left -= parseInt(_object.scrollLeft, 10); _top -= parseInt(_object.scrollTop, 10); } }