为什么Javascript中没有HTMLSectionElement和HTMLArticleElement?

con*_*exo 6 html javascript dom

您可以像这样测试一个元素是否是 adiv或 a span

const div = document.createElement('div');
console.log(div instanceof HTMLDivElement);

const span = document.createElement('span');
console.log(span instanceof HTMLSpanElement);
Run Code Online (Sandbox Code Playgroud)

到目前为止,这种测试方法适用于我所知道的大多数HTML 元素。

不幸的是,检查元素类型的相同方法不适用于sectionarticle 元素,这意味着我可能不得不求助于el.tagName === 'SECTION'respectively el.tagName === 'ARTICLE'

编辑:刚刚测试,以下全局变量也不存在

  • HTMLNavElement
  • HTMLHeaderElement
  • HTMLMainElement
  • HTMLAsideElement
  • HTMLFooterElement

有谁知道并且有任何参考,为什么没有HTMLSectionElementHTMLArticleElement全局变量?

这是因为它们在技术上都是div具有不同标签名称的元素,以提供更好的语义吗?

con*_*exo 8

感谢 @pointy 的评论指出了这一点,当前 HTML 规范的以下部分解释了这一点:

所有 HTML 元素的接口都继承自该基本接口,并且没有附加要求的元素必须使用该基本接口,这就是HTMLElement接口。

  • 请注意,例如“<div>”有自己的接口来支持已弃用的“align”属性,我认为没有其他原因。 (2认同)