【发布时间】:2015-06-20 04:33:37
【问题描述】:
如何在 shadow DOM 中选择节点?考虑以下示例:
“无阴影”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()”这样的 cmets 中,我显示了我尝试从任何阴影 DOM 外部运行的选择器。
我已经阅读了以下文章:http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/?redirect_from_locale=ru 并且基于文章中所说的事实,在 JS 中的查询如下:document.querySelector('app-element::shadow h2'); 应该可以按预期工作。但是在 Dart 中它不起作用。
我做错了什么?
【问题讨论】:
标签: css-selectors dart polymer dart-polymer shadow-dom