javascript – 检查Dom元素是否为原生/没有自定义元素

有没有办法检查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).

点赞