2014-01-28 42 views
1

我想創建與谷歌聚合物的platform.js一個很簡單的例子,但我得到了以下錯誤:Uncaught TypeError: Cannot read property '_polyfilled' of undefined使用Google聚合平臺時未定義_polyfilled?

這裏就是我想要做:

<current-date></current-date> 

<script> 
    document.registerElement('current-date', { 
     prototype: { 
      createdCallback: function() { 
       this.innerHTML = new Date(); 
      } 
     } 
    }); 
</script> 

http://jsbin.com/uwUxeYA/1/edit

請注意,如果沒有platform.js加載,此代碼在Google Canary中完美工作。我是否在其他瀏覽器(最新的Chrome,Firefox等)上錯誤地使用了polyfill?

回答

2

您沒有正確創建原型。在這種形式,它需要:

document.registerElement('current-date', { 
    prototype: Object.create(HTMLElement.prototype, { 
    createdCallback: { 
     value: function() { 
     this.innerHTML = new Date(); 
     } 
    } 
    }) 
}); 

IMO,一個更清晰的形式是:

var proto = Object.create(HTMLElement.prototype); 
proto.createdCallback = function() { 
    this.innerHTML = new Date(); 
}; 
document.registerElement('current-date', {prototype: proto}); 

工作演示:http://jsbin.com/uwUxeYA/3/edit

+0

謝謝你的工作!並感謝文章! :) – TruMan1