1

我现在正在检查 Polymer。它有一些令人惊奇的功能。我有一个自定义元素可以访问一些分布式节点,使用getDistributedNodes. 在 chrome 和 firefox 中getDistributedNodes返回一个数组,而不是 a NodeList,但在 chrome canary 中我得到一个NodeList.

没有 Polymer(仅使用 shadowDom 且没有自定义元素的更简单的示例)我在 chrome stable 和 chrome canary 中都获得了 NodeList。

其中哪一个应该是正确的返回值,是什么原因造成的?

这是一个带有 Polymer 的 jsfiddle

并且没有 Polymer,没有自定义元素,仅适用于本机 shadowDom 支持,因此没有 firefox)

4

1 回答 1

2

这是因为在 Chrome(稳定版)和其他浏览器中,Polymer 使用了 Shadow DOM polyfill,它包装了 DOM 对象。您不能在NodeList本机创建一个,因此该调用通过返回一个数组来最好地模仿本机 API。

在 Canary 下(在 about:flags 中有“Experimental Web Platform features”),Polymer 将使用本机 Shadow DOM。原因是 Canary 有许多新的 Shadow DOM 功能/修复/性能优化,但尚未进入还没有稳定的通道。我们正在积极地强制 polyfill 直到它达到稳定 :)

于 2013-10-06T18:01:51.867 回答