Определить высоту страницы (не окна)

Hannes

Client
Регистрация
03.02.2016
Сообщения
501
Благодарностей
243
Баллы
43
Здравствуйте!

Столкнулся на первый взгляд с простой задачей, которую не получается победить уже несколько часов. Нужно определить высоту страницы сайта (не окна) и поместить значение в переменную.

Искал решение через JS, были найдены такие скрипты:

Код:
window.onload=function(){
height=(document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
//bla-bla
}
Код:
var ua = navigator.userAgent.toLowerCase();
var isOpera = (ua.indexOf('opera')  > -1);
var isIE = (!isOpera && ua.indexOf('msie') > -1);

function getDocumentHeight() {
  return Math.max(document.compatMode != 'CSS1Compat' ? document.body.scrollHeight : document.documentElement.scrollHeight, getViewportHeight());
}

function getViewportHeight() {
  return ((document.compatMode || isIE) && !isOpera) ? (document.compatMode == 'CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight : (document.parentWindow || document.defaultView).innerHeight;
}
Но не работают они по какой-то причине. Код помещаю в "Свой JavaScript код", ставлю выполнение на текущей странице.

Подскажите, пожалуйста, как можно получить высоту.

Спасибо!
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
методом get body height , должно вроде как взять правильно
 
  • Спасибо
Реакции: Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
501
Благодарностей
243
Баллы
43
Спасибо за отклик!
Способ рабочий, но не получается захватиться за конец страницы, закрывающийся body например. Он хватается за верхний и дает значение близкое к нулю.
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
потёрто, не понял, как это хватается за верхний, боди же один на странице
 
  • Спасибо
Реакции: Hannes

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
Спасибо за отклик!
Способ рабочий, но не получается захватиться за конец страницы, закрывающийся body например. Он хватается за верхний и дает значение близкое к нулю.
в пм на дереве элементов найдите боди, кликните правой кнопкой и выберите - добавить в конструктор действий, далее выберете Get и параметр height , не может быть значение близко к нулю, если на странице что-то есть более 1 пикселя, всё что есть всё и покажет
 
  • Спасибо
Реакции: JurgenZolle и Hannes

Hannes

Client
Регистрация
03.02.2016
Сообщения
501
Благодарностей
243
Баллы
43
Вы правы, разобрался!
Спасибо!
 

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
вот еще способ C#

Код:
// get main tab
Tab tab = instance.MainTab;
// get main document
Document doc = tab.MainDocument;
// get the height of document
int height = doc.Height;
return height;
 
  • Спасибо
Реакции: Hannes, todayer и Woodire

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
вот еще способ C#

Код:
// get main tab
Tab tab = instance.MainTab;
// get main document
Document doc = tab.MainDocument;
// get the height of document
int height = doc.Height;
return height;
а как же кубики? это же фишка зеннопостера

на самом деле лезу в символы на клаве - только когда без этого не обойтись, поскольку наглядность и тестовсть.. возможно когда привычен к коду - то не так страшно, но тестить код в зеннопостере - это ни пошагаешь. были статьи с тестингом в визуал студии - но как-то не популярно было, так что по-прежнему юзая код, только когда без него не обойтись, в основном - это действия связанные с локом чего-то для многопотока, остальное почти всё можно сделать кубиками.
 

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
кубики это конечно хорошо. но и в код лучше иногда залазить :-)
плохо что мануалов с примерами по C# нет понятных.
или есть?
 

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
к тому же отрезок кода пихается в кубик и нет проблем
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
211
Благодарностей
854
Баллы
93
  • Спасибо
Реакции: sdsfwehbn

JurgenZolle

Client
Регистрация
19.09.2018
Сообщения
135
Благодарностей
20
Баллы
18
тоже встала такая задача. запишу тут, чтобы не забыть (для остальных, наверное, это прозрачно)
если открыто несколько tabs, то способ на С#, который указан выше, определяет высоту только основной(первой) страницы
для активной заменить на Tab tab = instance.ActiveTab;
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
тоже встала такая задача. запишу тут, чтобы не забыть (для остальных, наверное, это прозрачно)
если открыто несколько tabs, то способ на С#, который указан выше, определяет высоту только основной(первой) страницы
для активной заменить на Tab tab = instance.ActiveTab;
И? Активируете нужную вкладку и определяете колько душе угодно.
 

JurgenZolle

Client
Регистрация
19.09.2018
Сообщения
135
Благодарностей
20
Баллы
18
И? Активируете нужную вкладку и определяете колько душе угодно.
я говорю, что без правки кода, всегда будет считываться высота только первой открытой страницы, какую бы вкладку я не активировал...
если не лень, посмотрите пример в PM
 

Вложения

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
я говорю, что без правки кода, всегда будет считываться высота только первой открытой страницы, какую бы вкладку я не активировал...
если не лень, посмотрите пример в PM
Не понимаю о какой правке кода идет речь. Если вы о различиях instance.MainTab и instance.ActiveTab, то это, практически, из названия понятно. Ну, если непонятно, то документация в помощь: https://help.zennolab.com/en/v5/zennoposter/5.18.0.0/webframe.html#topic218.html

upload_2018-10-5_9-47-41.png
upload_2018-10-5_9-48-14.png

Удачи.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)