为什么我不能在 Google Chrome 48 中创建自己的自定义组件?
Why can't I create my own custom component in Google Chrome 48?
我已经使用 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
是本机的),我的代码已加载并执行(该元素已注册,如果我尝试在控制台中再次注册它,我会收到警告) ,并且回调有效(我可以在控制台手动调用)。
会发生什么?我怎样才能让它发挥作用?
您可以通过在 注册元素之前 附加事件处理程序来使其工作:
var myComp = Object.create(HTMLElement.prototype);
myComp.attachedCallback = function ()
{
console.log('my-comp attached');
}
document.registerElement('my-comp', {prototype: myComp});
我已经使用 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
是本机的),我的代码已加载并执行(该元素已注册,如果我尝试在控制台中再次注册它,我会收到警告) ,并且回调有效(我可以在控制台手动调用)。
会发生什么?我怎样才能让它发挥作用?
您可以通过在 注册元素之前 附加事件处理程序来使其工作:
var myComp = Object.create(HTMLElement.prototype);
myComp.attachedCallback = function ()
{
console.log('my-comp attached');
}
document.registerElement('my-comp', {prototype: myComp});