Задать вопрос
@George196

Как обратиться к конкретному элементу вложенному в кастомный тег в JS?

У меня есть код и мне нужно получить доступ к тегу a с id "logo" . Но при попытке использовать document.getElementById("logo") я не получаю ничего. У меня есть мысль, что это как-то связанно с кастомным тегом, кто подскажет, как решить эту задачу? :)

<spline-viewer> 
  <div id="container">
	<a id="logo" href="..." style="display: flex;"><span></span><svg width="89" height="13" viewBox="0 0 89 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="..." fill="white"></path></svg>
	</a>
  </div>
</spline-viewer>
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
EdisonBig
@EdisonBig
code free
const splineViewer = document.querySelector("spline-viewer");

// Проверяем, есть ли Shadow DOM у элемента
if (splineViewer.shadowRoot) {
    const logo = splineViewer.shadowRoot.querySelector("#logo");
    console.log(logo); // Должно вывести ссылку <a id="logo">
} else {
    console.log("Shadow DOM не найден");
}


Попробуйте найти теневой корень (shadowRoot) внутри
Что делать, если shadowRoot возвращает null?
Некоторые веб-компоненты используют закрытый Shadow DOM (mode: "closed"), и в этом случае вы не сможете получить доступ к shadowRoot. Решения:
Проверить документацию к — возможно, есть публичные API для доступа к содержимому.
Использовать MutationObserver, если элемент появляется позже (например, загружается асинхронно).
Если у вас есть контроль над , попробуйте использовать mode: "open" при создании Shadow DOM.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы