我正在从svg-icon
中挤出最后一个字节自定义内置HTMLImage元素
一些详细问题:
-
苹果/Safari&定制Buil In Elements
是否有关于开发人员的讨论可供阅读? -
我会因为不使用
constructor()
而没有super()
调用而遇到麻烦吗? -
不使用
connectedCallback()
也是如此?
奖金问题:
-
attributeChangedCallback
得到第四个参数。。。无证
有人知道这方面的更多信息吗?该片段显示了所有4种浏览器中的P4
object=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">
- yes中讨论的不断发展的标准https://github.com/WICG/webcomponents
- yes,不在派生类中指定构造函数将自动从原型链继承父构造函数(最终默认为空方法(
- 是,所有Web组件生命周期回调函数都是可选的
-
是,签名为
attributeChangedCallback(attrName, oldValue, newValue, attrNamespace)
,如下所示:
icon.setAttribute('color', 'red'); //'color',null,'red',null
icon.setAttributeNS('foo', 'color', 'red'); //'color',null,'red','foo'