Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.11.2024, 18:57
Аспирант
Отправить личное сообщение для Timurkin Посмотреть профиль Найти все сообщения от Timurkin
 
Регистрация: 12.08.2017
Сообщений: 50

Отследить появление элемента
Нужно прокидывать цель в метрику после отправки формы.
Пытаюсь привязаться к событию после того как форма отправлена, в модальном окне появляется:
<div class="wpforms-confirmation-container" id="wpforms-confirmation-1113"><p>Спасибо, что написали нам! Мы свяжемся с вами в ближайшее время.</p>
</div>


Делаю так:
if (document.querySelectorAll("#wpforms-confirmation-1113").length > 0) 
{console.log("форма отправлена");
}


Но не срабатывает
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2024, 11:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Timurkin
Делаю так
Вполне может быть, что на момент проверки элементов просто нет.

Так же можно напомнить что:
- ИД должен быть уникальным на странице и querySelectorAll можно и не применять к селектору идентификатора.
- Если важен сам факт наличия элементов, можно укоротить условие
document.querySelectorAll("селектор").length

Этого будет достаточно.
Или вообще вот так
document.querySelector("селектор")
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2024, 16:05
Аспирант
Отправить личное сообщение для Timurkin Посмотреть профиль Найти все сообщения от Timurkin
 
Регистрация: 12.08.2017
Сообщений: 50

Сообщение от ksa
Вполне может быть, что на момент проверки элементов просто нет.
А как тогда написать, нужен прослушиватель event listener ?
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2024, 16:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Timurkin
нужен прослушиватель event listener ?
Как вариант, использовать наблюдатель - MutationObserver.
Работа с ним хорошо описана в здешнем учебнике - https://learn.javascript.ru/mutation-observer
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2024, 19:28
Аспирант
Отправить личное сообщение для Timurkin Посмотреть профиль Найти все сообщения от Timurkin
 
Регистрация: 12.08.2017
Сообщений: 50

Сообщение от ksa Посмотреть сообщение
Как вариант, использовать наблюдатель - MutationObserver.
Работа с ним хорошо описана в здешнем учебнике - https://learn.javascript.ru/mutation-observer
Спасибо, нашел код, работает:
function handleMutation(mutationsList, observer) {
  for (const mutation of mutationsList) {
    if (mutation.type === 'childList') {
      for (const addedNode of mutation.addedNodes) {
        if (addedNode instanceof HTMLElement && addedNode.classList.contains('wpforms-confirmation-container')) {
          console.log('Появился новый элемент');
          observer.disconnect();
        }
      }
    }
  }
}
const observer = new MutationObserver(handleMutation);
observer.observe(document.body, { childList: true, subtree: true });


Единственное, не могу понять, как проверять не на класс, а на id ?
Ответить с цитированием
  #6 (permalink)  
Старый 15.11.2024, 09:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Timurkin
как проверять не на класс, а на id ?
Еще проще
Сообщение от Timurkin
addedNode.classList.contains('wpforms-confirmation-container')
Заменить на
addedNode.id === 'нужный_ИД'
Ответить с цитированием
  #7 (permalink)  
Старый 16.11.2024, 10:34
Аспирант
Отправить личное сообщение для Timurkin Посмотреть профиль Найти все сообщения от Timurkin
 
Регистрация: 12.08.2017
Сообщений: 50

ksa, все работает, спасибо)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отследить появление элемента на странице? рони Общие вопросы Javascript 18 23.06.2020 09:18
Отслеживание появление элемента на чистом JavaScript bortmehannik Javascript под браузер 1 07.09.2017 19:12
Плавное появление элемента. anabenne Ваши сайты и скрипты 6 25.07.2016 23:23
как отследить появление элемента на чужой странице Udik Events/DOM/Window 3 17.08.2013 06:01
Как отследить высоту элемента? ml227 Events/DOM/Window 1 07.08.2013 21:31