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

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

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

Возможный дубликат Обнаружение изменения высоты документа

Aziz 07.03.2016 17:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
11
1
10 662
4

Ответы 4

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

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

Это обнаруживает изменение области просмотра или размера окна. Мне нужна высота или длина документа.

airportyh 11.12.2008 03:17

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

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

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

Смотрите здесь большое красное предупреждение? «Как правило, по возможности следует избегать использования watch () и unwatch (). Эти два метода реализованы только в Gecko и предназначены в первую очередь для отладки. Кроме того, использование точек наблюдения оказывает серьезное негативное влияние на производительность»

Innate Imunity is The Way 18.01.2014 18:27

Вы можете изменить размер окна пользователя, чтобы уловить изменение размера окна с помощью 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 ())

Другие вопросы по теме