有没有办法检查Dom元素是一个本机元素还是一个(未解析的)自定义元素而不检查 Javascript中的所有Native tagNames?
我已经考虑过检查element.constructor === HTMLElement但是< main> (documentation)标签有它作为它的顶级课程.
基本上我需要一种更快,更少维护的方法来检查本机元素.
最佳答案 所以在 comment of Supersharp之后我发现所有自定义元素tagName或is属性都必须包含一个连字符,而本机元素永远不会这样做,所以最好的方法就是使用这个函数:
function isCustomElement(element){
if(element.tagName.indexOf("-") !== -1) {
return true;
}
let isAttribute = element.getAttribute("is");
if(isAttribute === null) {
return false;
}
return isAttribute.indexOf("-") !== -1;
}
就那么简单.
The W3C Standard documentation:
They contain a hyphen, used for namespacing and to ensure forward compatibility (since no elements will be added to HTML, SVG, or MathML with hyphen-containing local names in the future).