Nano Hash - криптовалюты, майнинг, программирование

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

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

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

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


Ответы:


1

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


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

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

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

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

03.04.2011
  • Вы можете изменить $(document) на $("body") или что-то подобное. 04.04.2011
  • в общем, есть кнопка, и когда пользователь нажимает на эту кнопку, jquery запускает функцию load(), которая загружает другой контент с другого URL-адреса с помощью ajax и заменяет пустой div этим контентом... 04.04.2011
  • также я не могу поместить какую-либо функцию в обратный вызов load(), поскольку, когда я это делаю, функция срабатывает до того, как весь загруженный контент даже отображается на экране, следовательно, до фактического изменения размера 04.04.2011
  • Затем просто выполните проверку, когда ваш контент загружен. Это означает, что вы должны включить проверку в функцию обратного вызова .load(). 04.04.2011
  • да, но тайм-аут был бы ненадежным, поскольку время, необходимое для загрузки, является переменным, поэтому, если тайм-аут недостаточно длинный, он может выйти из строя, но если он слишком длинный, он может оказаться бесполезным... кроме того, сколько времени достаточно долго 04.04.2011
  • Извините, но обратный вызов не сработает, пока содержимое не будет загружено. В этом смысл функции обратного вызова. См. здесь: api.jquery.com/load 04.04.2011
  • Я думаю, что DOMSubtreeModified больше не поддерживается. 07.12.2013
  • Это решение не является кроссбраузерным. 18.01.2014
  • Добавлено уведомление об устаревании. 19.01.2014

  • 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());
    });
    
    09.11.2017

    3

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

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

    var hasVScroll = document.body.scrollHeight > document.body.clientHeight;
    
    04.04.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..