手动查询嵌套阴影中的元素 Dom? API没有递归?在 PSK1 中不是这样的
Manually Querying Elements In Nested Shadow Dom? API has no recursion? Wasn't like this in PSK1
这是在 Chrome 的上下文中,其中阴影 dom 是在...
中烘焙的
在聚合物入门套件 1 中,有 a great example of being able to globally query a element - app.$.paperDrawerPanel.closeDrawer();
. Here is another great example - var middleContainer = Polymer.dom(document).querySelector('#mainToolbar .middle-container');
我假设它递归地遍历阴影 doms。我假设聚合物元素,例如 paperDrawerPanel
,在某些时候处于阴影 dom,即使我不必使用 Polymer.dom()
.
但是在 Polymer 入门工具包 2 的入门工具包模板中,我不得不手动查询每个嵌套阴影 dom。
例如我有:
我的-app.html
<dom-module id="my-app">
<template>
<app-header-layout fullbleed has-scrolling-region>
<!-- Drawer content -->
<app-header fixed shadow>
<app-toolbar>
<paper-icon-button icon="menu" on-tap="_drawerToggle"></paper-icon-button>
<div main-title class="app-name">Dolphin</div>
</app-toolbar>
</app-header>
<!-- Main content -->
<iron-pages
selected="[[page]]"
attr-for-selected="name"
fallback-selection="view404"
role="main">
<my-view1 name="view1"></my-view1>
和
我的-view.html:
<dom-module id="my-view1">
<template>
<app-drawer id="drawer">
<div class='left-bar-container'>
<app-toolbar class="toolbar-drawer">Menu</app-toolbar>
<iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation">
<a name="view1" href="/view1">Home</a>
<a name="view2" href="/view2">Users</a>
<a name="view3" href="/view3">Contact</a>
</iron-selector>
</div>
</app-drawer>
如果我想查询 <app-drawer id="drawer">
全局 我必须执行这个疯狂的例程:
level1 = Polymer.dom(document.querySelector('my-app').root)
level2 = Polymer.dom(level1).querySelector('my-view1').root
Polymer.dom(level2).querySelector('#drawer')
在我必须手动查询嵌套的 Shadow Doms 的 Polymer 中,PSK1 和 PSK2 之间发生了什么变化?似乎查询 API 曾经有递归。如果我需要全局查询 #drawer
是否有更好的方法?
在 Polymer 通道上询问后,Shady dom 刺穿 dom 树,其中元素驻留在光 dom 中。 PSk1 使用黑幕 dom。如果可用,PSK2 默认为 Shadow dom。这样,我必须手动查询每个嵌套级别。
这是在 Chrome 的上下文中,其中阴影 dom 是在...
中烘焙的在聚合物入门套件 1 中,有 a great example of being able to globally query a element - app.$.paperDrawerPanel.closeDrawer();
. Here is another great example - var middleContainer = Polymer.dom(document).querySelector('#mainToolbar .middle-container');
我假设它递归地遍历阴影 doms。我假设聚合物元素,例如 paperDrawerPanel
,在某些时候处于阴影 dom,即使我不必使用 Polymer.dom()
.
但是在 Polymer 入门工具包 2 的入门工具包模板中,我不得不手动查询每个嵌套阴影 dom。
例如我有:
我的-app.html
<dom-module id="my-app">
<template>
<app-header-layout fullbleed has-scrolling-region>
<!-- Drawer content -->
<app-header fixed shadow>
<app-toolbar>
<paper-icon-button icon="menu" on-tap="_drawerToggle"></paper-icon-button>
<div main-title class="app-name">Dolphin</div>
</app-toolbar>
</app-header>
<!-- Main content -->
<iron-pages
selected="[[page]]"
attr-for-selected="name"
fallback-selection="view404"
role="main">
<my-view1 name="view1"></my-view1>
和
我的-view.html:
<dom-module id="my-view1">
<template>
<app-drawer id="drawer">
<div class='left-bar-container'>
<app-toolbar class="toolbar-drawer">Menu</app-toolbar>
<iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation">
<a name="view1" href="/view1">Home</a>
<a name="view2" href="/view2">Users</a>
<a name="view3" href="/view3">Contact</a>
</iron-selector>
</div>
</app-drawer>
如果我想查询 <app-drawer id="drawer">
全局 我必须执行这个疯狂的例程:
level1 = Polymer.dom(document.querySelector('my-app').root)
level2 = Polymer.dom(level1).querySelector('my-view1').root
Polymer.dom(level2).querySelector('#drawer')
在我必须手动查询嵌套的 Shadow Doms 的 Polymer 中,PSK1 和 PSK2 之间发生了什么变化?似乎查询 API 曾经有递归。如果我需要全局查询 #drawer
是否有更好的方法?
在 Polymer 通道上询问后,Shady dom 刺穿 dom 树,其中元素驻留在光 dom 中。 PSk1 使用黑幕 dom。如果可用,PSK2 默认为 Shadow dom。这样,我必须手动查询每个嵌套级别。