Я пытаюсь ограничить querySelector элементами с теневым dom, созданным шаблоном, с основной линией моей веб-страницы. Вот фрагмент из того, что я хочу сделать:полимерный ограничивающий запросSlector to shadow dom с встроенным шаблоном
<template id="userForm" is="auto-binding">
<div id=contents>
<my-element id='myElement>
</div>
</template>
<script>
var userForm = document.querySelector('#userForm');
Теперь я хотел бы иметь возможность сделать что-то вроде:
var myElement = userForm.querySelector('#myElement');
или
var myElement = userForm.$.contents.querySelector('#myElement');
Но ни одна из этих работ. Если шаблон содержатся в пользовательском элементе я мог бы использовать:
this.$.contents.querySelector('#myElement);
Все это в помощь убедившись, что я не; выбрать элемент с тем же идентификатором вне шаблона.
Кто-нибудь знает, как это осуществить?
Спасибо за предложение Дэвида. Я попробовал, но, используя мой пример выше, userForm.shadowRoot является неопределенным значением. –
@WillHopkins Когда вы используете 'console.dir' для регистрации вашего элемента, вы видите там свойство shadowRoot? Или, если на то пошло, вы используете полипол или изначально? –
Ой, подождите секунду, вы пытаетесь получить shadowRoot элемента шаблона, это не сработает, вероятно, нет, потому что у шаблона нет тени DOM, я уверен, что ... просто взгляните на хром инспектора и посмотреть, где элемент на самом деле. И свойство '.shadowRoot' доставит вас в любые тени, которые вы найдете. –