как да използвате полимерни полифили заедно

Опитвам се да използвам полифилите 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
Този тип конфигурация със сигурност трябва да се поддържа (моля, подайте сигнал за грешка), но сте опитвали да използвате само platform.js, за да получите поддръжката на polyfill? Ако това не работи с вашия кодов фрагмент, това наистина е грешка.   -  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 polyfill, първо трябва да го заредите, защото той изцяло пренасочва DOM. Други библиотеки (обикновено) могат да се зареждат отгоре на пренареждането, но не и отдолу.

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

person Scott Miles    schedule 25.01.2014