文档 IDL 中的属性"getter object (DOMString name);"



HTML 5.1规范在文档IDL中定义奇异属性。

getter object (DOMString name);

这不是打字错误,我不知道怎么用

Document接口的WebIDL定义的那一部分指定它有一个命名的属性getter。它只有在与HTML规范中定义Document接口支持的属性名的部分结合时才有意义。

它们一起指定了一些作为Document的命名属性公开的东西。

考虑以下文档:

<!doctype html>
<form name=foo></form>
<form name=bar></form>
<iframe name=bar></iframe>
<p id=baz>

如果您调用document.foo,您将返回单个元素,即form name=foo元素。

如果你调用document.bar,你将返回一个包含form name=bar元素和iframe name=bar元素的集合。

如果你调用document.baz,你会得到undefined

所有这些行为的原因是,定义Document接口支持的属性名称的HTML规范部分指定form[name]值和iframe[name]值可以作为Document的命名属性访问

该规范还规定,如果Document命名属性只匹配一个元素,则返回该元素,但如果它匹配多个元素,则返回一个集合。

document.baz返回undefined的原因是因为规范部分没有指定p[id]的值可以作为Document的命名属性访问。

但是,如果您执行window.baz,则返回p id=baz元素。

造成这种差异的原因是:虽然Window的WebIDL定义指定它具有命名属性getter(就像Document WebIDL所做的那样),但定义Window支持的属性名称的部分-与Document的类似部分不同- 指定p[id]值(实际上是任何元素的id值)作为Window的命名属性可访问。

相关内容

最新更新