ownerdocument 是 dom 节点的只读属性,返回该节点所属的 document 对象;所有 node 实例(如 element、text)均继承此属性,无论是否挂载、是否在 iframe 或 shadow dom 中均可靠指向其实际归属文档。

ownerDocument 是 DOM 节点的一个只读属性,直接返回该节点所属的 document 对象(即根文档对象)。
直接访问 ownerDocument 属性
所有 Node 类型的实例(如 Element、Text、Comment 等)都继承自 Node,因此都具备 ownerDocument 属性。只要有一个有效节点,就能立即获取其所属文档:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- // 假设 el 是一个已挂载的 HTML 元素
const doc = el.ownerDocument;- // doc 就是 el 所在页面的 document 对象(通常是 window.document)
和 document 属性的区别
注意不要混淆:ownerDocument 和 document 不是同一个东西:
-
document是全局变量(window.document),仅在主文档上下文中存在; -
ownerDocument是节点自身的属性,**始终指向该节点实际归属的文档**,即使节点处于 Shadow DOM、iframe 或动态创建未挂载的状态下也可靠; - 例如,在 iframe 中的元素上调用
el.ownerDocument,返回的是 iframe 的contentDocument,而非顶层页面的document。
常见使用场景
这个属性常用于需要安全创建新节点或查询上下文文档的操作:
- 创建与目标节点同源的元素:
el.ownerDocument.createElement('div'); - 确保事件监听或样式注入发生在正确的文档环境(尤其跨 iframe 或 Web Components);
- 判断节点是否属于当前文档(
el.ownerDocument === document); - 在 Shadow DOM 中获取宿主文档或影子根所属文档(
shadowRoot.ownerDocument返回 shadow root 所属的文档)。
注意事项
- 文本节点、注释节点等也拥有
ownerDocument,即使它们没有document属性; - 如果节点已被从文档中移除,
ownerDocument依然有效(它不依赖是否挂载); - 新建但尚未插入的节点(如
document.createElement()创建后),其ownerDocument默认为当前document,除非显式通过adoptNode或其他方式变更归属。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










