Фон:
Я попытался решить вопрос StackOverflow еще одну задачу компоновки HTML/CSS - боковую панель высочайшего уровня с липким нижним колонтитулом самостоятельно, используя jQuery. Поскольку боковая панель в моем случае может быть длиннее основного содержимого, она соответствует случаю комментарий 8128008. Это делает невозможным иметь боковую панель дольше, чем основное содержимое, и иметь липкий нижний колонтитул без проблем при сокращении окна браузера.
Статус-кво:
У меня есть html-страница с div, которая автоматически растягивается, чтобы заполнить экран. Поэтому, если пустое пространство ниже элемента, я растягиваю его вниз:

Но если окно просмотра браузера меньше самого div, растягивание не выполняется, но появляется полоса прокрутки:

Я подключил jQuery к событию изменения размера окна, чтобы изменить размер div, если окно браузера не будет маленьким и удалит любое изменение размера в другом случае. Это делается путем проверки, что область просмотра больше или меньше, чем document. Если область просмотра меньше, чем document, кажется, что содержимое больше, чем окно браузера, почему изменение размера не выполняется; в другом случае мы изменим размер div, чтобы заполнить страницу.
if ($(document).height() > $(window).height()) {
// Scrolling needed, page content extends browser window
// --> No need to resize the div
// --> Custom height is removed
// [...]
} else {
// Window is larger than the page content
// --> Div is resized using jQuery:
$('#div').height($(window).height());
}
Проблема:
До сих пор все работает хорошо. Но если я сокращаю окно браузера, бывают случаи, когда размер div должен быть изменен, но document больше высоты window, почему мой script предполагает, что не требуется изменение размера и div изменение размера.
Фактически, точка, если я проверяю высоту document, используя Firebug после появления ошибки, высота имеет только значение, которое должно было иметь. Поэтому я подумал, что высота document установлена с небольшой задержкой. Я попытался запустить код изменения размера немного, но это не помогло.
Я установил демонстрацию на jsFiddle. Просто медленно снимите окно браузера, и вы увидите мерцание div. Также вы можете смотреть вывод console.log(), и вы заметите, что в случае "мерцания" высота document и высота window различаются, а не равны.
Я заметил это поведение в Firefox 7, IE 9, Chrome 10 и Safari 5.1. Вы можете это подтвердить?
Знаете ли вы, есть ли исправление? Или это подход совершенно неправильный? Пожалуйста, помогите мне.