Как я могу выбрать узлы в тени DOM? Рассмотрим следующий пример:Как запросить элементы в тени DOM снаружи в Dart?
структуру "неомраченный" DOM
<app-element>
#shadow-root
<h2></h2>
<content>
#outside shadow
<h2></h2>
</content>
<ui-button>
#shadow-root
<h2></h2>
</ui-button>
</app-element>
index.html
<body>
<app-element>
<!-- OK: querySelect('app-element').querySelect('h2') -->
<!-- OK: querySelect('app-element h2') -->
<!-- There is no problem to select it -->
<h2>app-element > content > h2</h2>
</app-element>
</body>
templates.html
<polymer-element name="ui-button" noscript>
<template>
<!-- FAIL: querySelect('app-element::shadow ui-button::shadow h2') -->
<h2>app-element > ui-button > h2</h2>
</template>
</polymer-element>
<polymer-element name="app-element" noscript>
<template>
<!-- FAIL: querySelect('app-element::shadow').querySelect('h2') -->
<!-- FAIL: querySelect('app-element::shadow h2') -->
<!-- FAIL: querySelect('app-element').shadowRoot.querySelect('h2') -->
<h2>app-element > h2</h2>
<content></content>
<ui-button></ui-button>
</template>
</polymer-element>
В комментариях типа «OK: querySelect()« Я показываю селектора, которые я пытался запускать из любой скрытой DOM.
Я уже читал следующую статью: http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/?redirect_from_locale=ru и исходя из того, что в статье сказано, что запрос: document.querySelector('app-element::shadow h2');
в JS должен работать должным образом. Однако в Дарте это не работает.
Что я не так?
Где ваш '' querySelector ... код? В основном, в классе 'AppElement', где в классе? –
Использование CSS все работает так, как ожидалось: псевдоселектор типа ':: shadow' и combinator'/deep/'влияет на элементы. Однако это не имеет смысла, когда я использую функции 'querySelect (All)' Дарта. Только h2 внутри '' тег доступен. Что не так? –
Код в 'main() {}' –