Javascript 在Firefox中获取可见范围

Javascript 在Firefox中获取可见范围,javascript,xul,visible,xulrunner,Javascript,Xul,Visible,Xulrunner,是否可以使用Javascript或普通Javascript中的XUL函数获取当前视口范围(浏览器中页面的可见部分) 谢谢大家! 宽度:document.body.offsetWidth; 高度:document.body.offsetHeight 对于需要使用document.documentElement.scrollTop/scrollLeft/scrollHeight/scrollWidth的视口,各种浏览器都有更好的示例。有一点复杂:我认为在quirks模式下(document.comp

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


谢谢大家!

宽度:document.body.offsetWidth; 高度:document.body.offsetHeight


对于需要使用
document.documentElement.scrollTop
/
scrollLeft
/
scrollHeight
/
scrollWidth
的视口,各种浏览器都有更好的示例。有一点复杂:我认为在quirks模式下(
document.compatMode
“BackCompat”
),您需要在
document.body
上检查这些属性,而不是
document.documentElement

有关文档,请参阅

编辑:您似乎对视口并不感兴趣,而是对其内容感兴趣。另外,没有通用的方法来获取网页特定区域的内容。它绝对不能用一个
范围
对象来描述,而是一组范围。即使这样:如果元素有很多文本,而所有文本都是单个
TextNode
,那么您将不知道文本的哪些部分是可见的,哪些部分不是可见的

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


下面是一个例子,它针对一个包含大量文本的垂直滚动的
(在Firefox 6、Chrome 14和IE 9中测试)。它首先需要确保每个文本字符都放置在自己的
TextNode
中,否则您将无法在
范围
对象中单独选择它。然后选择文本的容器并移动范围的起点,直到范围的上边界低于容器的上边界。然后它通过移动范围的末端对底部边界执行相同的操作。最后,您将得到一个范围,该范围仅选择完全可见的文本节点。

我已经检查了此解决方案(如中所示)。这只是一个近似值,在调整窗口大小时会出现错误。@JonathanNuñezAguin:如果您对视口内容感兴趣,而不是视口本身感兴趣,那么如果您这样说会有所帮助。请参阅我答案的更新。是的,我对其内容有所了解。我希望获得视口中第一个可见单词的“句柄”。起初尝试使用xul的document.elementFromPoint,但这有一个问题:它将给我包含的div,并且它可以在视口之前很久启动。因此,我认为可能有一个使用范围的解决方案…@JonathanNuñezAguin:请看我的代码示例-您获得了一个范围,您可以查看
startOffset
属性(
range.startContainer.childNodes[range.startOffset]
是第一个可见的节点)。这很有效!我以前在FF3中进行过测试,结果不起作用,但在FF6中还可以。非常感谢。对于一个标准的网站来说,这个问题是XUL特有的。