У меня есть тяжелое приложение с javascript, в котором есть такие виджеты, как выпадающие списки автозаполнения, вкладки и т. д. Иногда, когда раскрывающиеся списки появляются и исчезают, или когда вы переключаетесь между вкладками, это меняет высоту документа. Это может вызвать раздражение, если полоса прокрутки появляется и быстро исчезает из-за сдвига страницы. Я хотел бы определять, когда страница меняет свою высоту, поэтому я могу зафиксировать высоту до максимума, чтобы, если появится полоса прокрутки, она не исчезнет только через секунду. Какие-либо предложения?
Обновление: onresize не будет работать, потому что это для изменения размера окна просмотра / окна - мне нужны изменения длины документа. Я не знал о функции часов, похоже, она будет работать как минимум для FF, но IE ее не поддерживает.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, вы можете ловить "onresize" события
вот ссылка на описание w3schools.com
Это обнаруживает изменение области просмотра или размера окна. Мне нужна высота или длина документа.
Одна из идей - использовать метод watch () в свойстве clientHeight:
document.body.watch("clientHeight", function(property, oldHeight, newHeight) {
// what you want to do when the height changes
});
Указанная вами функция будет выполняться всякий раз, когда указанное свойство изменяется. В любой момент вы можете использовать метод unwatch (), чтобы остановить его.
Смотрите здесь большое красное предупреждение? «Как правило, по возможности следует избегать использования watch () и unwatch (). Эти два метода реализованы только в Gecko и предназначены в первую очередь для отладки. Кроме того, использование точек наблюдения оказывает серьезное негативное влияние на производительность»
Вы можете изменить размер окна пользователя, чтобы уловить изменение размера окна с помощью jquery следующим образом:
$(window).resize(function(){
// your code to check sizes and take action
}
);
В качестве альтернативы вы можете отслеживать изменение в документе (не проверено)
$(document).resize(function(){
// your code to check sizes and take action
}
);
Я полагаю, что на этот вопрос уже был дан ответ в stackoverflow здесь: Обнаружение изменения высоты документа
В основном вам нужно сохранить текущую высоту документа и продолжать проверять наличие изменений с помощью тайм-аута.
Здесь нужно следить за элементом document.body.clientHeight (или в jquery $ (document) .height ())
Возможный дубликат Обнаружение изменения высоты документа