Range:cloneContents() 方法
Range
接口的 cloneContents()
方法会复制范围的 commonAncestorContainer
的所选 Node
子项,并将它们放入一个新的 DocumentFragment
对象中。
节点使用与 Node.cloneNode()
相同的算法进行克隆,这意味着通过脚本附加的事件监听器不会被克隆。HTML id
属性会被克隆,这可能导致克隆后文档无效。
commonAncestorContainer
的第一个和最后一个被选中的子项可能是部分选中的。在这种情况下,子节点本身会被克隆,但其内容仅限于被选中的部分,这是通过递归克隆原始范围的开始/结束边界与该子节点的结束/开始边界之间的范围来实现的。
<p>paragraph 1</p><p>paragraph 2</p><p>paragraph 3</p> ^----------- selection ------------^ cloneContents() returns: <p>graph 1</p><p>paragraph 2</p><p>para</p>
语法
js
cloneContents()
参数
无。
返回值
一个 DocumentFragment
对象。
示例
js
range = document.createRange();
range.selectNode(document.getElementsByTagName("div").item(0));
documentFragment = range.cloneContents();
document.body.appendChild(documentFragment);
规范
规范 |
---|
DOM # dom-range-clonecontents |
浏览器兼容性
加载中…