Javascript 如何检查JS对象是否实现了一些DOM IDL接口?
假设文档节点满足HtmleElement IDL接口。计算结果为Javascript 如何检查JS对象是否实现了一些DOM IDL接口?,javascript,dom,specifications,Javascript,Dom,Specifications,假设文档节点满足HtmleElement IDL接口。计算结果为true: document.querySelectorAll('a')[0] instanceof HTMLElement 这是正确的测试方法(通过HtmleElement的实例进行测试)吗 似乎所有DOM接口都是在全局对象中定义的,以便在该表达式o_0中可以访问。我不太清楚为什么要这样做,但它应该在现代浏览器中工作。它在IE8或更低版本中不起作用 如果您的目标是查看节点是元素还是文本节点或类似节点,则更广泛的兼容方式是使用:
true
:
document.querySelectorAll('a')[0] instanceof HTMLElement
这是正确的测试方法(通过HtmleElement的实例进行测试)吗
似乎所有DOM接口都是在全局对象中定义的,以便在该表达式o_0中可以访问。我不太清楚为什么要这样做,但它应该在现代浏览器中工作。它在IE8或更低版本中不起作用
如果您的目标是查看节点是元素还是文本节点或类似节点,则更广泛的兼容方式是使用:
这些类型由DOM规范给出,作为(1=元素)定义的一部分
如果您的目标是测试某个元素是否是特定类型的元素(HTMLAnchorElement
等等),请使用或(如果您知道它是一个元素)标记名
。在HTML(不是XHTML)文档中,这些是大写的标记名,例如
console.log(document.querySelector('a').nodeName); // "A"
旁注:编写
document.queryselectoral('A')[0]
的更好方法是document.querySelector('A')
:-)通过这种方式,引擎知道在找到第一个节点时可以停止查找。我问了另一个问题,在这里我迭代了node=node.parentNode
,并需要条件何时停止,这就是Htmlement的node instanceof
。
console.log(document.querySelector('a').nodeName); // "A"