我们最近开始在工作中使用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
但是在这两件事之间有些东西正在重置{{ 1}}它失去了CustomElements
。
我设法在一个小的测试案例中复制了这个问题。我不能把它放在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不应该吗?还有其他人遇到过这个问题吗?