javascript - 如何在 safari 中找到 Shadow DOM 中的元素? ( polymer )

标签 javascript polymer web-component

我在Polymer上使用纸张输入,在chrome中我可以在shadow DOM中找到元素

var input = this.$.input.querySelector(':host /deep/ input')

但这在 Safari 中不起作用。我认为“/deep/”有问题。 如何在 Safari 中找到元素?

最佳答案

除了 Chrome、Opera 和 Andriod ( http://caniuse.com/#feat=shadowdom ) 之外,任何浏览器都不支持 Shadow DOM 和所有连接的选择器。这就是为什么在 Polymer 1 中我们有阴暗的 DOM。

现在 Polymer 的人也考虑到了 Shadow DOM 的好处(没有设计流失),所以他们想出了 shady DOM。这有双方:

  1. 如果您将 CSS 放入模板中(尤其是 CSS 选择器),它就会被重写。这就是 :host/deep/::shadow 等内容起作用的原因。
  2. 如果您像您一样在 JS 中使用选择器,则不必费心使用这些特殊的选择器。只要看一下 DOM 就可以了。因此,例如 document.querySelectorAll('paper-input') 可以获取所有 paper-input 元素,无论它们位于 DOM 中的哪个位置。

关于javascript - 如何在 safari 中找到 Shadow DOM 中的元素? ( polymer ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33148871/

相关文章:

polymer - 如果 Polymer Js 中的数组为空,想要显示消息

javascript - 8Tracks API 自定义元素与 Polymer 不起作用

javascript - float 中的绝对定位元素

javascript - polymer 中的简单冲压 IF 不起作用

html - observe.js 中的纸张下拉菜单错误

polymer - 无法选择 "auto-binding"模板内的元素

Polymer/Lit 元素,当父组件修改属性时,子组件不会重新渲染

javascript - 使用 mocha 进行测试时导入 firebase-functions-test 时出错

javascript - div 中的中心 img

javascript - 创建内联表单,Bootstrap