Получите видимый диапазон в Firefox - PullRequest
0 голосов
/ 20 сентября 2011

Можно ли получить текущий диапазон области просмотра (видимую часть страницы в браузере), используя функции XUL из Javascript или обычного Javascript?

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

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

0 голосов
/ 20 сентября 2011

ширина: document.body.offsetWidth; высота: document.body.offsetHeight;

ЗДЕСЬ - лучшие примеры для различных браузеров

...