我们最近开始在工作中使用Polymer而且我们喜欢它但是我们发现ShadowDOM polyfill在与重量级DOM操作结合使用时会在Firefox中导致严重的性能问题(我们遇到了DataTables jQuery插件的问题但是只需让Firebug打开即可看到效果 .

我们可以没有那个polyfill,所以我们决定只使用CustomElements和HTMLImports . 我们遵循了关于构建单个polyfill的官方指南并生成了缩小的JS文件,但是当我们使用它们时,我们始终遇到此错误:

"TypeError: CustomElements.parser is undefined"

当我们使用 platform.js 时,我们不会收到此错误 . 我甚至尝试生成旧版本的polyfill,看看它是否是最近的问题无济于事 . 当我们挖掘代码时,似乎CustomElements的 bootstrap 函数正在调用 CustomElements.parser.parse() - parser 在之前不久被添加到 CustomElements 但是在这两件事之间有些东西正在重置 CustomElements 并且它失去了 parser .

我已经设法在一个小的测试用例中复制了这个问题 . 我不能把它放在JSFiddle上因为它需要HTML导入而且我收到了CORS错误所以我必须在我的共享服务器上托管它(请温柔!) . 您需要在Firefox中打开它才能看到错误(您还会看到Chrome中的错误,但它不需要填充,因此自定义元素仍会显示):

http://lilchef.co.uk/polymer-polyfill-bug.html

相比之下,这是完全相同的测试用例,而是使用platform.js . 这有效,但包括有问题的ShadowDOM polyfill(如果你在运行它时打开Firebug,你应该会遇到减速):

http://lilchef.co.uk/polymer-polyfill-platform.html

我们应该能够使用这两个polyfill而不必使用ShadowDOM不应该吗?还有其他人遇到过这个问题吗?