Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Polymer sample code not working in firefox

Tags:

polymer

I am trying out sample code provided by Google at https://www.polymer-project.org/1.0/start/first-element/intro.

This is what I have so far:

index.html:

<!DOCTYPE html>                                                                                                          
<html lang="en">                                                                                                         
  <head>                                                                                                                 
    <meta charset="utf8">                                                                                                
    <meta http-equiv="X-UA-Compatible" content="IE=edge">                                                                
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">              
    <script src="https://polygit.org/components/webcomponentsjs/webcomponents-lite.js"></script>                         
    <link href="/my_components/icon-toggle-demo.html" rel="import">                                                      
  </head>                                                                                                                
  <body>                                                                                                                 
    <icon-toggle-demo toggle-icon="star"></icon-toggle-demo>                                                             
  </body>                                                                                                                
</html>  

icon-toggle-demo.html:

<link rel="import" href="https://polygit.org/components/polymer/polymer.html">                                              
<link rel="import" href="https://polygit.org/components/iron-icons/iron-icons.html">                                        
<link rel="import" href="icon-toggle.html">                                                                                 


<dom-module id="icon-toggle-demo">                                                                                          
  <template>                                                                                                                
    <style>                                                                                                                 
      :host {                                                                                                               
        font-family: sans-serif;                                                                                            
      };                                                                                                                    
    </style>                                                                                                                

    <h3>Statically-configured icon-toggles</h3>                                                                             

    <icon-toggle toggle-icon="star"></icon-toggle>                                                                          
    <icon-toggle toggle-icon="star" pressed></icon-toggle>                                                                  

    <h3>Data-bound icon-toggle</h3>                                                                                         

    <!-- use a computed binding to generate the message -->                                                                 
    <div><span>[[message(isFav)]]</span></div>                                                                              

    <!-- curly brackets ({{}}} allow two-way binding -->                                                                    
    <icon-toggle toggle-icon="favorite" pressed="{{isFav}}"></icon-toggle>                                                  
  </template>                                                                                                               

  <script>                                                                                                                  
    Polymer({                                                                                                               
      is: "icon-toggle-demo",                                                                                               
      message: function(fav) {                                                                                              
        if (fav) {                                                                                                          
          return "You really like me!";                                                                                     
        } else {                                                                                                            
          return "Do you like me?";                                                                                         
        }                                                                                                                   
      }                                                                                                                     
    });                                                                                                                     
  </script>                                                                                                                 
</dom-module> 

icon-toggle.html:

<link rel="import" href="https://polygit.org/components/polymer/polymer.html">                                              
<link rel="import" href="https://polygit.org/components/iron-icon/iron-icon.html">                                          

<dom-module id="icon-toggle">                                                                                               

  <template>                                                                                                                

    <style>                                                                                                                 
      /* local DOM styles go here */                                                                                        
      :host {                                                                                                               
        display: inline-block;                                                                                              
      }                                                                                                                     

      iron-icon {                                                                                                           
        fill: rgba(0,0,0,0);                                                                                                
        stroke: currentcolor;                                                                                               
      }                                                                                                                     
      :host([pressed]) iron-icon {                                                                                          
        fill: currentcolor;                                                                                                 
      }                                                                                                                     

    </style>                                                                                                                

    <!-- local DOM goes here -->                                                                                            
    <!-- <span>Not much here yet.</span> -->                                                                                
    <!-- <iron-icon icon="polymer"> -->                                                                                     
    <iron-icon icon="[[toggleIcon]]">                                                                                       
    </iron-icon>                                                                                                            
  </template>                                                                                                               

  <script>                                                                                                                  
  Polymer({                                                                                                                 
    is: 'icon-toggle',                                                                                                      
    properties: {                                                                                                           
      toggleIcon: String,                                                                                                   
      pressed: {                                                                                                            
        type: Boolean,                                                                                                      
        value: false,                                                                                                       
        notify: true,                                                                                                       
        reflectToAttribute: true                                                                                            
      }                                                                                                                     
    },
    listeners: {                                                                                                         
      'tap': 'toggle'                                                                                                    
    },                                                                                                                   
    toggle: function() {                                                                                                 
      this.pressed = !this.pressed;                                                                                      
    }                                                                                                                    
  });                                                                                                                    
  </script>                                                                                                              

</dom-module>  

The code works fine in chrome but I get following error in FF:

TypeError: document.registerElement is not a function

I have already included the polyfill. Something else missing?

like image 967
kargirwar Avatar asked Mar 09 '23 18:03

kargirwar


2 Answers

You're doing nothing wrong. The following line in your index.html file defaults to the newest version (v1.0.0-rc.1) of the webcomponents polyfill.

<script src="https://polygit.org/components/webcomponentsjs/webcomponents-lite.js"></script>

There appears to be a bug in the current version for Firefox. The same error can also be observed in the Plunker that is linked in the Polymer docs here. This will hopefully be fixed by the Polymer team.

To fix it for now, you can explicitly use an older version. For example.

<script src="https://cdn.rawgit.com/webcomponents/webcomponentsjs/v0.7.24/webcomponents-lite.js"></script>
like image 111
Maria Avatar answered Mar 16 '23 14:03

Maria


WebComponents v1.0.0+ should only be used with Polymer 2.0. Use version ^0.7.24 with Polymer 1.

like image 35
SmokinMedia.com Avatar answered Mar 16 '23 14:03

SmokinMedia.com