手动查询嵌套阴影中的元素 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。这样,我必须手动查询每个嵌套级别。