在可重复使用的Polymer组件中的元素上使用ID是否安全?

时间:2016-05-18 20:37:01

标签: javascript dom polymer polymer-1.0

Polymer 0.5 FAQ对此进行了如下说明:

  

我的组件正在生成包含多个同名ID的标记。

     

Shadow DOM polyfill试图模仿原生Shadow DOM,因为仍然会封装具有相同ID的节点。

     

但是,在使用polyfill时,应避免使用DOM级别的ID引用(例如<label for>)。在Shadow DOM polyfill下,id可能无法正确解析。

在Polymer 1.x中,这仍然适用吗?如果我执行document.getElementById,那不会总是返回带有该ID的DOM中的第一个元素吗?如果重用Polymer组件,我不需要首先将我的范围限制为感兴趣的组件,然后调用component.getElementById(或Polymer的组件。$ .ID)?

这当然也会影响通过测试框架访问元素。另一种方法是使用类来访问组件中的元素(例如,组件。$$('。myClass')),但使用ID似乎更清晰,通常更合适。对此有更多的澄清将非常感激。

1 个答案:

答案 0 :(得分:0)

永远不会安全&#34;在同一页面上多次使用ID。任何可重用的组件都应该始终使用Classes。您已经确定了许多存在风险的原因 - 但是请记住,当您有多个使用相同ID名称的实例时,您将无法使用基本的JS函数,如getElementByID()。