2008-12-28 31 views

回答

13

不直接。 TextNode没有用于测量视口定位的原始IE偏移*(和类似的)扩展。

仅在IE上,您可以创建一个TextRange对象,费力地尝试将其与TextNode的边界对齐,然后测量TextRange的boundingLeft/boundingTop,并将其添加到父元素的位置(由通常的手段)。然而,这是一个潜在的摇摆不定的单浏览器解决方案。

另一种您可能能够避开的方法是将文本包装到span元素中(无论是在文档中,还是通过脚本动态地和/或暂时地),并使用span来测量位置,假设它不是捡起任何可能影响位置的附加样式。但请注意,包裹的跨度可能不会给出预期的右/底值;取决于你想要用它做什么,你最终可能会包装第一个和最后一个字符或其他安排。

总结:呃,没什么好说的。

+0

使用你的想法 - 谢谢你的洞察力! http://stackoverflow.com/questions/6990350/jquery-get-text-currently-shown-ie-not-just-visible/6990382#6990382 – AlienWebguy 2011-08-09 03:10:47

+0

耻辱,但在一个跨度包装正在修改页面,所以没有用我 – SuperUberDuper 2016-08-26 15:50:29

0

看看this article - 它使用offsetParent属性递归计算出偏移量。

我总是会推荐jQuery来滚动你自己的浏览器变化的东西。 jquery CSS functions似乎有你需要的方法!

+1

不幸的是,DOM文本节点似乎没有offsetLeft/offsetTop属性。而且jQuery也不能很好地处理文本节点:我找不到如何为它们编写选择器表达式(不要求children()不返回文本节点)。 – dpq 2008-12-28 21:13:32