2011-09-13 4 views
1

У меня есть внешний скрипт, который используется на некоторых сайтах. Сценарий пытается рассчитать высоту всей HTML-страницы (а не только видимой части ..)Размер всей HTML-страницы (при высоте 100%)

все в порядке, кроме одного странного случая - некоторые сайты используют body { height:100% }. Когда JavaScript пытается вычислить высоту всей страницы, он возвращает только видимую высоту.

я использовал:

document.body.scrollHeight 

протестирован на Chrome & Firefox

+0

Али - взять CNN, например – gilmad

+0

Если вы можете использовать JQuery, Я бы дал этому [jQuery height()] (http://api.jquery.com/height/) функцию выстрела. –

ответ

5

нашел answere:

var body = document.body, 
html = document.documentElement; 
var height = Math.max(body.scrollHeight, body.offsetHeight, 
        html.clientHeight, html.scrollHeight, html.offsetHeight); 

JQuery это не вариант, так как другие сайты используют мой сценарий, и я не могу сказать им, чтобы использовать JQuery

+0

Nice. Вы ответили на свой вопрос =) –

+0

На самом деле я нашел ответ на этот вопрос: http: //stackoverflow.com/questions/1145850/get-height-of-entire-document-with-javascript – gilmad

+1

Это спасло меня, разрешив мне взломать исправление для Firefox и Bootstrap scrollspy. У нас есть дизайн, который использует тело: 100% и FF показывает scrollHeight как 0. Какой кошмар ... спасибо! –

0

Это действительно зависит от того, какой элемент вы пытаетесь вычислить высоту.

Если элемент html имеет высоту 100%, это будет высота окна браузера. Тогда тело может быть выше, чем из-за некоторого содержимого, но высота элемента html не изменится, он останется прежним.

Так что это действительно зависит от того, какой элемент на странице вызывает увеличение содержимого. Затем вы должны измерять высоту этого элемента, но как вы можете узнать, какой из них это?

Проверить this example.

+0

Я говорю о теге . дайте ему высоту 100%, и вы увидите проблему ... – gilmad

+0

проверить пример, который я добавил –

Смежные вопросы