как использовать полимерные полифиллы вместе

Я пытаюсь использовать полифиллы Polymer для 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>

Любые предложения, что может пойти не так здесь?


person Jeanluca Scaljeri    schedule 30.12.2013    source источник
comment
Этот тип конфигурации, безусловно, должен поддерживаться (пожалуйста, сообщите об ошибке), но пытались ли вы использовать только платформу.js, чтобы получить поддержку полифилла? Если это не работает с вашим фрагментом кода, то это действительно ошибка.   -  person ebidel    schedule 01.01.2014
comment
Можете ли вы создать изолированный пример на JSFiddle (или аналогичном сайте)?   -  person Benjamin Gruenbaum    schedule 01.01.2014
comment
Когда я заменяю включение custom-elements.js и shadowdom.js на platform.js, все работает :) Thnx. Если мне все еще нужно подготовиться к описанной выше ситуации, пожалуйста, дайте мне знать!   -  person Jeanluca Scaljeri    schedule 01.01.2014
comment
Я также заметил, что он не работает в PhantomJS, он выдает следующую ошибку: ReferenceError: Can't find variable: Window\n at/Users/.../bower_components/platform/platform.js:29 Любые предложения, как почини это ?   -  person Jeanluca Scaljeri    schedule 02.01.2014


Ответы (1)


Всякий раз, когда вы используете полифил ShadowDOM, вы должны сначала загрузить его, потому что он полностью переназначает DOM. Другие библиотеки (как правило) могут загружаться поверх переназначения, но не под него.

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

person Scott Miles    schedule 25.01.2014