Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查JS对象是否实现了一些DOM IDL接口?_Javascript_Dom_Specifications - Fatal编程技术网

Javascript 如何检查JS对象是否实现了一些DOM 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或更低版本中不起作用 如果您的目标是查看节点是元素还是文本节点或类似节点,则更广泛的兼容方式是使用:

假设文档节点满足HtmleElement IDL接口。计算结果为
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"