Как запустить jQuery после события $(window).on('load')
У меня есть страница WordPress, созданная с помощью конструктора Elementor, на которой я отображаю 'флипбуки' (просмотрщики PDF) с использованием плагина Responsive Flipbooks. Флипбуки становятся адаптивными благодаря JavaScript-функции, которая изменяет их размер при изменении размера окна браузера (не знаю почему, но это не мой плагин).
Проблема в том, что книги отображаются в своем минимальном размере, и плагин запускает jQuery(window).trigger('rfbwp.resize');
при загрузке страницы, чтобы инициировать изменение размера для соответствия текущему окну. Однако это не работает в некоторых браузерах (по крайней мере в Safari и Chrome на моем Mac), из-за чего они остаются маленькими. Я обнаружил, что если поместить эту строку кода в событие $(window).on('scroll')
, книги идеально меняют размер при прокрутке. Конечно, они также изменяются при фактическом изменении размера страницы, однако это не работает, если я помещаю этот код в событие $(window).on('load')
.
Это заставляет меня думать, что элементы еще не были полностью загружены, когда срабатывает это событие, что странно, потому что я думал, что событие загрузки окна срабатывает последним.
Может ли это быть связано с тем, как WordPress строит страницу, учитывая, что все компоненты поставляются со своими собственными скриптами? Верно ли, что $(window).on('load')
срабатывает последним - даже на сложной странице WordPress?
Соответствующая страница доступна по адресу http://cdgstyle.mixrabbit.com/lookbook/
Скорее всего, это не связано с ядром WordPress - в большинстве случаев подобные проблемы возникают из-за конфликтов плагинов. Я бы рекомендовал отключить все другие плагины и попробовать стандартную тему, например Twenty Seventeen. Если после этого всё заработает, можно включить тему и проверить, а затем активировать плагины по одному с проверкой, чтобы найти конфликтующий плагин. После этого стоит сообщить об этом разработчику плагина, чтобы он мог найти решение.
Если при использовании стандартной темы и только этого плагина проблема сохраняется, вот два варианта замены для $(window).on('load')
:
jQuery(window).load(function($) {
// ваш код
});
Или более кратко:
(function($) {
// ваш код
})(jQuery);
WordPress использует jQuery в режиме no conflict, поэтому проблема может быть просто в синтаксисе $
. Если это исправит ситуацию, часто быстрее всего отправить pull request в репозиторий плагина, чтобы стимулировать разработчика к действию.
