3

我正在尝试将Polymer polyfills用于ShadowDOM自定义元素

如果我单独使用它们,它们工作得很好,但是当我同时使用它们时,我会遇到这样的错误

Uncaught TypeError: Cannot read property 'polymerShadowRoot_' of undefined.....Element.js:69

这取决于我是先包含 customelement.js 还是 shadowdom.js

这是我的测试代码:

<!doctype html>

<html>
  <head>

    <script src="/bower_components/CustomElements/custom-elements.js"></script>
    <script src="/bower_components/ShadowDOM/shadowdom.js"></script>

    <script>
      var proto = Object.create(HTMLElement.prototype);

      proto.createdCallback = function() {
        console.log('create shadowDOM');
        var root = this.createShadowRoot();
        root.innerHTML = '<content></content>';
      };

      document.register('x-foo', {prototype: proto});
    </script>
  </head>

  <body>
    <x-foo><span>hallo</span></x-foo>
  </body>
</html>

有什么建议在这里可能会出错吗?

4

1 回答 1

1

每当使用 ShadowDOM polyfill 时,您必须先加载它,因为它完全重新映射 DOM。其他库(通常)可以在重新映射的顶部加载,但不能在下面加载。

http://jsbin.com/uBOQIBu/3/edit

于 2014-01-25T17:19:31.273 回答