Подтвердить что ты не робот

Как определить изменение размера документа в jquery

так что предположим, что щелчок чего-то приведет к загрузке нового содержимого на экран, следовательно, высота изменения документа и, в то время как ранее нет полос прокрутки, теперь на самом деле есть полосы прокрутки...

как я могу обнаружить что-то подобное, используя jquery

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

4b9b3361

Ответ 1

Update:
Не используйте событие DOMSubtreeModified. Он устарел, устарел и не поддерживается браузерами. В 99,9% случаев есть другое событие, которое вы можете слушать. Скорее всего, вы один из тех людей, которые используют jQuery и делают некоторые материалы AJAX, поэтому, пожалуйста, взгляните на их AJAX docs.


Это все доступные события. Вам нужно будет обнаружить $(document).bind('DOMSubtreeModified', function() { ... }); и проверить изменение размера для предыдущего запуска.

var height = $(this).height(),
    width  = $(this).width();
$(document).bind('DOMSubtreeModified', function() {
    if($(this).height() != height || $(this).width() != width) {
        recalibrate();
    }
});

Это событие запускает каждое время что-либо для DOM. Поэтому он будет замедлять ваш браузер.

Мы должны получить лучшую альтернативу. Не могли бы вы дать нам больше информации по вашему сценарию?

Ответ 2

Вот решение.

// ajdust margins when page size changes (ie rotate mobile device)
$(window).resize(function() {
  // Do something more useful
  console.log('doc height is ' + $(window).height());
});

Ответ 3

Вы можете попробовать процентное прокручиваемое событие, подобное этому: http://www.jquery4u.com/snippets/jquery-detect-scrolled-page/

Вам может потребоваться добавить проверку, чтобы увидеть, есть ли вертикальная полоса прокрутки:

var hasVScroll = document.body.scrollHeight > document.body.clientHeight;