Как определить, когда изменяется высота вашей страницы?

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

Обновление: onresize не будет работать, потому что это для изменения размера области просмотра / окна - я хочу изменения в длине документа. Я не знал о функции часов, похоже, она будет работать по крайней мере для FF, но IE не поддерживает ее.

11.12.2008 00:11:16
Возможный дубликат определения изменения высоты документа
Aziz 7.03.2016 14:33:43
4 ОТВЕТА

Я думаю, что вы можете поймать в ловушку "onresize" события

вот ссылка на описание w3schools.com

1
11.12.2008 00:13:07
Это обнаруживает изменение области просмотра или размера окна. То, что я хочу, это высота или длина документа.
airportyh 11.12.2008 00:17:11

Одной из идей было бы использование метода watch () в свойстве clientHeight:

document.body.watch("clientHeight", function(property, oldHeight, newHeight) {
  // what you want to do when the height changes
});

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

-1
11.12.2008 01:15:45
Видите большое красное предупреждение здесь ? «Как правило, следует избегать использования watch () и unwatch (), когда это возможно. Эти два метода реализованы только в Gecko и предназначены в первую очередь для отладки. Кроме того, использование точек наблюдения оказывает серьезное негативное влияние на производительность»,
TMS 18.01.2014 14:27:15

Пользователь может изменить размер события, чтобы перехватить изменение размера окна с помощью jquery следующим образом:

$(window).resize(function(){
   // your code to check sizes and take action
  }
);

Также вы можете отслеживать изменения в документе (не проверено)

$(document).resize(function(){
   // your code to check sizes and take action
  }
);
-1
11.03.2015 10:51:23

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

По сути, вы должны сохранить текущую высоту документа и постоянно проверять изменения с помощью тайм-аута

Элемент для просмотра здесь - document.body.clientHeight (или в jquery $ (document) .height ()).

2
23.05.2017 10:29:14