Come posso selezionare i nodi all'interno di DOM shadow? Si consideri il seguente esempio:Come interrogare gli elementi all'interno di DOM shadow dall'esterno in Dart?
struttura di "senza ombre" 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>
In commenti come "OK: querySelect()" mostro selettori che ho provato a eseguire dall'esterno di qualsiasi DOM in ombra.
Ho già letto il seguente articolo: http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/?redirect_from_locale=ru e in base al fatto che è stato detto nell'articolo, query come: document.querySelector('app-element::shadow h2');
in JS dovrebbe funzionare come previsto. Tuttavia in Dart non funziona.
Cosa ho sbagliato?
Dove si trova il codice di '' querySelector ...? In main, nella classe 'AppElement', dove nella classe? –
Uso del CSS tutto funziona come previsto: pseudo selettore come ':: shadow' e combinator'/deep/'influenzano gli elementi. Comunque non ha senso quando uso le funzioni 'querySelect (Tutti)' di Dart. Solo h2 all'interno del tag '' è raggiungibile. Cosa c'è che non va? –
Codice nel 'main() {}' –