javascript - 检测 dom 元素是自定义 Web 组件还是 html 元素

标签 javascript web-component custom-element

在给定的 html 中,我如何判断 dom 元素是由浏览器定义的标准 html 组件还是在脚本中定义的 Web 组件(由作者):

<div></div>
<custom-web-component></custom-web-component>

我知道没有办法以编程方式检查 Web 组件是否已经注册。他们也都被认为是HTMLElement .有没有办法检查 dom 节点是标准 html 还是自定义 Web 组件?假设我使用 querySelector() 获取 dom 元素

最佳答案

要检测 DOM 元素是否是注册的自定义元素,您应该使用 customElements.get() .

如果该元素尚未注册或者它是标准 HTML 元素,该方法将返回 undefined .

如果它是一个注册的自定义元素,它将返回它的 class .

customElements.define( 'custom-element', class extends HTMLElement {} )

console.log( customElements.get( 'custom-element' ) )
console.log( customElements.get( 'p' ) )
console.log( customElements.get( 'fake-element' ) )
console.log( customElements.get( 'font-face' ) )
<custom-element></custom-element>
<fake-element></fake-element>
<p></p>
<font-face></font-face>

关于javascript - 检测 dom 元素是自定义 Web 组件还是 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47737652/

相关文章:

php - 如何从标题中获取多个(int)

javascript - form.submit 触发多次,每次响应后额外触发一次

html - Polymer 中的自定义属性不起作用

javascript - Web 组件 :host:hover

javascript - 自定义元素类 : this. getAttribute ('data-*' ) 返回 null

javascript - vanilla JS webcomponent 的用户样式

javascript - 如何单独包装开槽元素

javascript - 解析json时出错

javascript - 正则表达式无法匹配 Angular 2 中的加号 ('+' ),但在测试人员中运行良好

javascript - 如何让导入的 css 字体/图标对 shadow dom 中的元素产生影响?