Range:cloneContents() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

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

瀏覽器相容性

另見