Javascript 查找DOM元素根节点(阴影或灯光)的最佳方法是什么

Javascript 查找DOM元素根节点(阴影或灯光)的最佳方法是什么,javascript,web-component,shadow-dom,Javascript,Web Component,Shadow Dom,我想找到给定元素的DOM范围。换句话说,包含它的文档或文档片段 有什么比下面的代码更好/更快的吗 function getRootNode( element ){ if( document.contains(element) ){ return document; } var root = element; while( root.parentNode ){ root = root.parentNode; } return root; } 您只需使用:

我想找到给定元素的DOM范围。换句话说,包含它的文档或文档片段

有什么比下面的代码更好/更快的吗

function getRootNode( element ){
  if( document.contains(element) ){
    return document;
  }

  var root = element;
  while( root.parentNode ){
    root = root.parentNode;
  }
  return root;
}

您只需使用:

您只需使用:

getRootNode()是在shadowdom中执行此操作的最佳方法,它将返回shadowroot,否则将返回文档。 见:

快速说明:目前IE/Edge节点不支持它。getRootNode()是在shadow dom中执行此操作的最佳方法,它将返回shadow root,否则将返回文档。 见:


快速提示:目前IE/Edge不支持它,我觉得它不错。真的,这是一个代码审查问题,不适合这样。我觉得不错。实际上,这是一个代码审查问题,不适合这样做。但对于“未导入”,阴影DOM节点
元素。所有者文档
返回
文档
,而不是包含它的文档片段/shadowRoot。请参见此处:但对于未导入,阴影DOM节点
元素。ownerDocument
返回
文档
,而不是包含它的文档片段/shadowRoot。请看这里:请在您的答案中添加示例代码,而不仅仅是指向外部站点的链接。是的,当然!查看我的代码笔:基于@tomaleck提交的代码,请在您的答案中添加示例代码,而不仅仅是外部网站的链接。是的,当然!参见我的代码笔:基于@tomalec提交的代码
element.ownerDocument;