Привет всем! У меня есть проблема с Ninja Forms версии 3 и выше. Мне нужно поймать момент, когда форма полностью загружена и добавлена в DOM страницы через JavaScript.
Я уже перерыл документацию и потратил кучу времени на поиски в интернете, но ничего подходящего не нашел. Может кто-то сталкивался с похожей задачей?
Использую последнюю версию Ninja Forms 3+, хотя признаюсь, что вторая версия была намного удобнее в работе.
Очень не хочется делать постоянную проверку через setInterval, чтобы отслеживать появление формы на странице. Должен же быть более элегантный способ?
Буду благодарен за любые идеи и советы!
Да, третья версия все усложнила. Я решил это через MutationObserver - он отслеживает изменения в DOM и срабатывает, когда форма появляется. Создаешь observer, настраиваешь на нужный контейнер и ждешь элемент с классом nf-form-cont. Работает стабильнее setInterval и не грузит браузер. Пришлось поковыряться с настройками, но оно того стоит. Пользуюсь больше года - никаких проблем.
У меня было то же самое. Попробуй jQuery события. Ninja Forms 3 триггерит nfFormReady
когда форма готова. Вешай обработчик так: jQuery(document).on('nfFormReady', function(e, layoutView) { // твой код });
. Это официальный способ, хотя в доке толком не описан. Есть еще nfFormLoaded
, но оно срабатывает рано - структура еще не готова.
Пробовали через window.addEventListener(‘load’, function() {}) и потом искать форму? Ninja Forms часто грузится асинхронно, обычные DOM события не срабатывают. Можно еще отслеживать загрузку их CSS - когда CSS загрузился, форма обычно готова. Что именно нужно запустить после загрузки?