Для просмотра необходимо использовать 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
объекте.Затем он выбирает контейнер текста и перемещает начало диапазона, пока верхняя граница диапазона не окажется ниже верхней границы контейнера.И затем он делает то же самое для нижней границы, перемещая конец диапазона.В конце вы получите диапазон, в котором выделены только те текстовые узлы, которые полностью видны.