HTML - полная высота страницы, включая содержимое за пределами прокрутки - PullRequest
1 голос
/ 17 сентября 2010

Мне нужно узнать высоту страницы, включая содержимое, которое выходит за рамки вертикальной прокрутки, которая скрыта.Я выполнил поиск в Google и в QS, но это решение не применимо к моей ситуации.

Единственное условие - я не могу изменить HTML или BODY css.В основном я пробую это для расширения Firefox

Все методы, такие как

offsetHeight, scrollHeight, getComputedValue

, не работают на веб-сайте noupe.com.Каждый раз, когда я пытался найти вышеупомянутое свойство тела, оно давало мне 18px, хотя высота страницы превышала 4000 px.

Пробные jQuery

$(document).height();

тоже не работали.

Вот как я узнаю высоту страницы:

var x = window.content;
var pageBody = x.document.getElementsByTagName("body")[0];    
var my_pageheight = parseInt(x.document.defaultView.getComputedStyle(pageBody, "").getPropertyValue("height"));

Это дает мне 18px на noupe.com, но РАБОТАЕТ ХОРОШО на других сайтах.Любая подсказка, как я могу сделать эту работу.

Спасибо

1 Ответ

3 голосов
/ 17 сентября 2010

Как насчет

$('body').height();

Я собирался опубликовать объяснение, но Алекс в комментариях ниже сделал это для меня, поэтому вместо этого я полагаю, что я просто опубликую некоторые ссылки на места, гдеВы можете найти более подробную информацию по этому вопросу:

http://dev.opera.com/articles/view/35-floats-and-clearing/
http://www.smashingmagazine.com/2007/05/01/css-float-theory-things-you-should-know/

Также помните, что, поскольку мы имеем дело с элементом body, мы не можемиспользуйте метод overflow: hidden (который удалит полосы прокрутки со страницы).

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

var max = 0;

$('body *').each(function(){
    var current = $(this);
    if ((current.offset().top + current.height()) > max) max = current.offset().top + current.height();
});

Вероятно, считается одним изхудшие части Javascript, которые я когда-либо писал, поскольку вы заявили, что больше не можете добавлять CSS или HTML.Должно работать следующее (если оно вам все еще нужно):

$('<div />').css({
    'height': 0,
    'width': 0,
    'visibility': 'hidden',
    'clear': 'both'
}).appendTo('body');

$('body').height();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...