为什么我无法在Google Chrome 48中创建自己的自定义组件?

时间:2016-02-29 17:31:08

标签: google-chrome polymer-1.0 web-component

我使用Polymer提供的webcomponents polyfills构建了一个自定义元素库。它适用于Firefox和Safari。但它在Chrome 48中无法使用本机组件支持。如果我使用被黑客攻击的polyfill代码不使用本机实现,我可以使它工作...

以下是一个例子:

<!DOCTYPE html>
<html>
<head>
  <script>
    var myComp = Object.create(HTMLElement.prototype);
    document.registerElement('my-comp', {prototype: myComp}); 
    myComp.attachedCallback = function () {
      console.log('my-comp attached');
    }
  </script>

</head>
  <body>
   <my-comp></my-comp>
   <p> Just to check that page is loaded</p>
</body>
</html>

我应该在控制台中看到该消息,但不显示任何内容。 Chrome中启用了支持(我可以看到document.registerElement是本机的),我的代码已加载并执行(元素已注册,如果我尝试在控制台中再次注册,则会收到警告),以及回调有效(我可以在控制台中手动调用)。

会发生什么?我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:2)

您可以通过在注册元素之前附加事件处理程序来使其工作:

var myComp = Object.create(HTMLElement.prototype);
myComp.attachedCallback = function () 
{
  console.log('my-comp attached');
}
document.registerElement('my-comp', {prototype: myComp});