元素问题在IE中的位置
position of element issue in IE?
我正在使用以下javascript函数来获取元素的绝对位置
function findPos(obj) {
var curleft = 0;
if (obj.offsetParent) {
while (1) {
curleft += obj.offsetLeft;
if (!obj.offsetParent) {
break;
}
obj = obj.offsetParent;
}
}
}
该函数在除IE之外的所有浏览器中都能正常工作。在IE中,它在全屏中也能正常工作,但当调整浏览器大小时,此方法返回错误的偏移量。
你能帮我一下这个吗
我建议您从使用offsetParent/Top/Left
切换到使用getBoundingClientRect()
功能(略有增强)。它应该更具性能,因为您不必在DOM中循环,而且它应该在浏览器之间返回正确的结果。
您的findPos函数如下所示:
function findPos(obj) {
var gbcr = obj.getBoundingClientRect(),
dE = document.documentElement,
b = document.body,
scrollY = window.pageYOffset || dE.scrollTop || b.scrollTop, /* 1 */
scrollX = window.pageXOffset || dE.scrollLeft || b.scrollLeft, /* 1 */
top = gbcr.top + scrollY - dE.clientTop, /* 2 */
left = gbcr.left + scrollX - dE.clientLeft; /* 2 */
return { top: top, left: left };
}
getBoundingClientRect()
没有考虑滚动,所以您必须对此进行补偿- 可以在
<html>
上设置边界,因此如果不减去其值,函数可能会返回相对于文档的错误元素位置
相关文章:
- 修正了在Bootstrap Modal中IE 10与Chrome和Firefox的不同位置
- Javascript改变位置赢得'不适用于Chrome或IE
- 谷歌地图标记IE中的位置不正确,在chrome上工作正常
- 如果在 IE 中最后附加光标,则在光标位置的文本区域中插入文本
- 精灵图像的背景位置在 IE 中不起作用,用于倒计时时钟
- getElementsByTagName 为空或未定义,仅在 IE 中 - 并且仅在函数中的一个特定位置
- FF 13,IE 9:JSON 字符串化/地理位置对象
- 为什么从位置哈希中选择下拉列表在 Chrome 上有效,但不适用于 Firefox、IE 或 Safari
- 提高准确性 IE 11 地理位置
- Firefox 中的 HTML 位置问题(适用于 IE 和 Chrome)
- 导出按钮位置更改 IE 11 中的高图表
- IE中的鼠标位置
- Raphael JS:IE中缩放路径后的错误位置
- 元素问题在IE中的位置
- bookmarklet可以't在普通图像url上运行时在ie中的固定位置
- 动态创建Div's、 外部Div的孩子,在Chrome中的位置错误,但在IE中是正确的
- Javascript: "源代码在此位置不可用"使用IE调试时
- 在IE中获得插入符号位置在一种情况下工作,在另一种情况下不工作
- 改变文本区域onclick的值将插入符号置于一个奇怪的位置,但仅在IE中
- javascript FreeTextBox获得插入符号的位置(IE)