没有构造函数/超级调用的自定义Buil-In元素,以及苹果的未来



我正在从svg-icon中挤出最后一个字节自定义内置HTMLImage元素

一些详细问题:

  • 苹果/Safari&定制Buil In Elements
    是否有关于开发人员的讨论可供阅读?

  • 我会因为不使用constructor()而没有super()调用而遇到麻烦吗?

  • 不使用connectedCallback()也是如此?

奖金问题:

  • attributeChangedCallback得到第四个参数。。。无证
    有人知道这方面的更多信息吗?

    该片段显示了所有4种浏览器中的P4object=null:Chrome、Edge、FireFox、Opera

customElements.define("svg-icon", class extends HTMLImageElement {
static get observedAttributes() {
return ["color"];
}
attributeChangedCallback(name,oldValue,newValue,P4,P5) {
console.log('P4:',typeof P4,P4,'P5:',typeof P5,P5);
this.src = `data:image/svg+xml,<svg viewBox='0 0 8 8' xmlns='http://www.w3.org/2000/svg'>`
+`<circle cx='4' cy='4' r='4' fill='${newValue}'/></svg>`
}
}, { extends: "img" })
img{
width:10%;
}
<img is="svg-icon" color="red">
<img is="svg-icon" color="green">
<img is="svg-icon" color="blue">

  1. yes中讨论的不断发展的标准https://github.com/WICG/webcomponents
  2. yes,不在派生类中指定构造函数将自动从原型链继承父构造函数(最终默认为空方法(
  3. ,所有Web组件生命周期回调函数都是可选的
  4. ,签名为attributeChangedCallback(attrName, oldValue, newValue, attrNamespace),如下所示:
icon.setAttribute('color', 'red'); //'color',null,'red',null
icon.setAttributeNS('foo', 'color', 'red'); //'color',null,'red','foo'

相关内容

  • 没有找到相关文章

最新更新