element.querySelector vs parentNode.firstElementChild и их синхронность - PullRequest
0 голосов
/ 10 января 2020

Мой тестовый пример выглядит следующим образом:

Мой скрипт должен изменить внешний вид NavBar-клиентов. Клиент добавляет мой скрипт к своим html. Они должны были добавить его сверху, чтобы избежать эффекта мерцания, но иногда они не помещают его в самый верх. поэтому html выглядит примерно так:

<html>
  <head>
    <theirScript1/>
    <myScript/>
    <theirScript2/>
  </head>

  <body>
    <theirScript3/>
    <NavBarContainer/>
    <theirScript4/>
  </body>
</html>

Теперь предположим, что один из сценариев thier (я не знаю, какой) добавит NavBar в NavBarContainer. myScript использует интервалы для непрерывного обхода домена (с document.querySelector) в поисках этого NavBar. Как только я нахожу этот элемент, я применяю свои изменения, и все хорошо. У меня вопрос в 2 частях.

Первое. Если весь NavBar, включая все его дочерние элементы, добавляется одним и тем же их сценарием (независимо от того, какой именно), могу ли я безопасно искать его дочерние элементы с помощью element.firstElementChild в myScript? Или возможно, что дочерние элементы не были бы смонтированы в то время?

Итак, рассмотрим следующий пример для myScript:

  //getElement = async function that uses intervals to look for elements matching the selector(can't post for legal reasons)

  const navBarEl = await getElement(selector); // get navBar with intervals

  const navBarFirstChildEl = navBarEl.firstElementChild; // once we get navBarEl element, get its first child without intervals

Безопасно ли использовать здесь navBarFirstChildEl? Насколько я понимаю, единственный способ это потерпит неудачу, если navBarEl и navBarFirstChildEl смонтированы разными их скриптами. Правильно ли это?

Второй вопрос: есть ли разница в любом сценарии ios, если я использую:

  const navBarFirstChildEl = filterBar.quertySelector('element:first-child')

Я знаю, что это длинный, многословный и запутанный вопрос. Я очень ценю все ваше время и помощь.

...