我使用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
是本机的),我的代码已加载并执行(元素已注册,如果我尝试在控制台中再次注册,则会收到警告),以及回调有效(我可以在控制台中手动调用)。
会发生什么?我怎样才能使它发挥作用?
答案 0 :(得分:2)
您可以通过在注册元素之前附加事件处理程序来使其工作:
var myComp = Object.create(HTMLElement.prototype);
myComp.attachedCallback = function ()
{
console.log('my-comp attached');
}
document.registerElement('my-comp', {prototype: myComp});