我有使用聚合物CLI(0.16.0版本)腳手架聚合物項目,但使用控制檯無法訪問影子根:如何創建帶有陰影dom的聚合物定製元素,以便我可以訪問它的shadowRoot?
var element = document.getElementsByTagName("my-app")[0].shadowRoot
返回undefined所以它看起來像影子DOM是封閉的模式。
如何強制自定義元素使用開放模式,以便從外部訪問它的shadowRoot?
編輯2: 這裏的主要問題是需要做訪問shadowRoot所以我改變了這個問題有點不與影子DOM模式相關
編輯什麼:
參考上https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom#advanced高級主題部分關閉模式
步驟來重現場景:
npm install -g polymer-cli
mkdir my-app
cd my-app
polymer init starter-kit
polymer serve --open
個一些代碼片段:
的index.html:
我-app.html:
...
<dom-module id="my-app">
<template>
...
</template>
<script>
Polymer({
is: 'my-app',
properties: {
page: {
type: String,
reflectToAttribute: true,
observer: '_pageChanged'
}
},
observers: [
'_routePageChanged(routeData.page)'
],
_routePageChanged: function(page) {
this.page = page || 'view1';
},
_pageChanged: function(page) {
// Load page import on demand. Show 404 page if fails
var resolvedPageUrl = this.resolveUrl('my-' + page + '.html');
this.importHref(resolvedPageUrl, null, this._showPage404, true);
},
_showPage404: function() {
this.page = 'view404';
}
});
</script>
</dom-module>
你可以添加一些代碼 – a1626
什麼是開放式和封閉式模式? –
另請注意,如果您想在Firefox上填充Shadow DOM,則應下載webcomponents.js,而不要使用不包含Shadow DOM填充的webcomponents-lite.js。 – Supersharp