javascript - 如何检查 JS 对象是否实现了某个 DOM IDL 接口(interface)?

标签 javascript dom specifications

Specs假设文档节点满足 HTMLElement IDL 接口(interface)。其计算结果为true:

document.querySelectorAll('a')[0] instanceof HTMLElement

这是正确的测试方法吗(通过 instanceof HTMLElement)?

最佳答案

我不太确定为什么你想这样做,但它应该可以在现代浏览器中工作。它不适用于 IE8 或更低版本。

如果您的目标是查看节点是元素节点还是文本节点或类似节点,则更广泛兼容的方法是使用 nodeType property :

document.querySelector('a').nodeType === 1

这些类型由 DOM 规范作为 Node interface 定义的一部分给出。 (1 = 元素)。

如果您的目标是测试某个元素是否是特定类型元素(HTMLAnchorElement 等),请使用 nodeName或(如果您知道它是一个元素)tagName。在 HTML(不是 XHTML)文档中,这些是大写的标签名称,例如

console.log(document.querySelector('a').nodeName); // "A"

关于javascript - 如何检查 JS 对象是否实现了某个 DOM IDL 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25185059/

相关文章:

javascript - 使用高效算法对数组中的相同对进行计数

javascript - 切换按钮可见性

javascript - FireFox/JQuery/Dom : Not returning 'rowIndex

javascript - jquery 可以操作用 DOM 创建的临时文档吗?

javascript - 单击 ajax 加载的按钮时调用 JavaScript 函数

css - 如何准确计算 flex 元素的假设主要大小 - CSS Spec 问题

javascript - Ramda,检查(过滤)字符串数组是否包含子字符串

javascript - 使用预签名 URL 从 PUT 到 S3 的 400 错误请求

java - java语法中具有多个类型参数列表的构造函数

c# - 从 using 语句中修改值类型是未定义的行为吗?