2015-08-11 1 views
0

Depuis la version Polymer 1.0, je commence à obtenir un ordre d'initialisation différent entre Chrome et les autres navigateurs (Firefox, barebone WebKit). Bien que les docs 1.0 disent "there are no guarantees with regard to initialization timing", dans la version 0.5 je n'ai pas eu un tel problème.Comment forcer Polymer à utiliser polyfill

index.html:

<script src="components/webcomponentsjs/webcomponents.js"></script> 
<link rel="import" href="name-tag.html"> 
<body onload="console.log('body onload');"> 
    <name-tag></name-tag> 
</body> 

nom-tag.html:

<link rel="import" href="components/polymer/polymer.html"> 

<dom-module id="name-tag"> 
    <template></template> 
    <script> 
    Polymer({ 
     is: "name-tag", 
     ready: function() { 
     console.log("polymer ready"); 
     } 
    }); 
    </script> 
</dom-module> 

Chrome 44:

polymer ready 
body onload 

Firefox 39, QWebView (Qt5.4, WebKit):

body onload 
polymer ready 

Ce que j'ai déjà essayé:

  • window.WebComponents = {flags: {register: true, polyfill: true}}; (register autrefois dans Polymer)
  • window.Polymer.Settings = {useNativeShadow: false};
  • attached rappel avec this.async()

Répondre

1

window.Polymer.dom = 'shadow' oblige Polymer à utiliser le DOM d'ombre par défaut (soit le polyfilled si vous avez utilisé webcomponents.js ou nativement si vous avez utilisé webcomponents-lite.js à la place).

+0

_soit le polyfilled si vous avez utilisé webcomponents.js_ - les docs disent le contraire: _'shadow ': DOM local est rendu en utilisant shadow DOM où supported_. Ce qui signifie qu'il utilisera l'implémentation native ** seulement ** là où il est pris en charge. Et voici ce que je reçois: Chrome rend aveC# shadow-root, Firefox non. – svlasov