获取Firefox中的可见范围

时间:2011-09-20 11:24:49

标签: javascript xul visible xulrunner

是否可以使用Javascript或普通Javascript中的XUL函数获取当前视口范围(浏览器中页面的可见部分)?

谢谢!

2 个答案:

答案 0 :(得分:1)

对于视口,您需要使用document.documentElement.scrollTop / scrollLeft / scrollHeight / scrollWidth。有一点点复杂:我认为在怪癖模式(document.compatMode"BackCompat")中,您需要在document.body而不是document.documentElement上检查这些属性。

有关文档,请参阅https://developer.mozilla.org/en/DOM/element.scrollTop

编辑:您似乎并不真正对视口感兴趣,而是对其内容感兴趣。 AFAIK没有通用的方法来获取网页特定区域的内容。它绝对不能用单个Range对象来描述,而是一组范围。即便如此:如果元素包含大量文本且所有文本都是单个TextNode,则您不会知道文本的哪些部分可见,哪些部分不可见。

但是,在某些特殊情况下(特别是当页面结构很简单时),您可以使用range.getBoundingClientRect()了解正在显示的文本。首先选择范围内的所有内容并减少选择,直到范围大小在视口边界内。

这是一个示例,它用于包含大量文本的垂直滚动<div>http://jsfiddle.net/5vEdP/(在Firefox 6,Chrome 14和IE 9中测试过)。首先需要确保每个文本字符都放在自己的TextNode中,否则您将无法在Range对象中单独选择它。然后,它选择文本的容器并移动范围的开始,直到范围的顶部边界低于容器的顶部边界。然后通过移动范围的末尾对底部边界做同样的事情。最后,您将获得一个范围,该范围仅选择完全可见的文本节点。

答案 1 :(得分:-1)

width:document.body.offsetWidth; height:document.body.offsetHeight;

HERE是各种浏览器的更好示例