Javascript 删除is=";的预期行为是什么&引用;自定义元素的属性?
比如说, 假设我们有Javascript 删除is=";的预期行为是什么&引用;自定义元素的属性?,javascript,html,polymer,web-component,custom-element,Javascript,Html,Polymer,Web Component,Custom Element,比如说, 假设我们有和一个自定义元素定义: document.registerElement('awesomebutton', AwesomeButton) 当is=“”属性被删除或替换为新值时,预期的行为是什么?,它应该对元素的类型没有影响: 实例化自定义元素后,更改is属性的值不得影响该元素的自定义元素类型 但是,attributeChangedCallback仍应正常触发。(该规范并未免除is属性触发它的责任。)您可以在支持浏览器(Chrome或设置了dom.webcomponents.
和一个自定义元素定义:
document.registerElement('awesomebutton', AwesomeButton)
当is=“”
属性被删除或替换为新值时,预期的行为是什么?,它应该对元素的类型没有影响:
实例化自定义元素后,更改is
属性的值不得影响该元素的自定义元素类型
但是,attributeChangedCallback
仍应正常触发。(该规范并未免除is
属性触发它的责任。)您可以在支持浏览器(Chrome或设置了dom.webcomponents.enabled
config标志的Firefox)中观察这种行为:
“严格使用”;
const prototype=Object.create(HTMLElement.prototype);
prototype.attributeChangedCallback=函数(名称、旧值、新值){
this.textContent=`my“${name}”属性更改为“${newValue}”!`;
};
registereElement('examp-el',{prototype:prototype,extensed:'div'});
const el=document.createElement('div','examp el');
el.textContent=“我是一个元素!”;
文件.正文.附件(el);
el.setAttribute('is','changed one');
删除属性(“is”);
el.setAttribute('is',“更改两次”);
el.setAttribute('is',“更改三次”)谢谢杰里米。在新问题计时器过期后标记为答案。您知道规范中“如果在元素实例化时提供了两种类型的自定义元素类型,则自定义标记必须胜过类型扩展”的含义吗?@trusktr我相信这是为了澄清不允许您执行
(您只允许扩展这样的内置类型),如果您执行此操作,浏览器应该忽略is
属性,只使用标记名(一个自定义类型
)。似乎DOM克隆可能会尊重is
的新值,而不是使用旧值的原型,但我可能会等到规范的这一部分更加明确之后再将其添加到文章中。