Range.extractContents() method moves contents of the 范围 from the document tree into a DocumentFragment .

Event listeners added using DOM Events are not retained during extraction. HTML attribute events are retained or duplicated as they are for the Node.cloneNode() method. HTML id attributes are also cloned, which can lead to an invalid document if a partially-selected node is extracted and appended to the document.

Partially selected nodes are cloned to include the parent tags necessary to make the document fragment valid.

句法

documentFragment = range.extractContents();
					

范例

基本范例

var range = document.createRange();
range.selectNode(document.getElementsByTagName("div").item(0));
var documentFragment = range.extractContents();
document.body.appendChild(documentFragment);
					

Moving items between containers

This example lets you move items between two containers. Select one or more item, and then click "swap" to move them to the opposite container.

HTML

<p id="list1">123456</p>
<button id="swap">Swap selected item(s)</button>
<p id="list2">abcdef</p>
					

CSS

body {
  pointer-events: none;
}
p {
  border: 1px solid;
  font-size: 2em;
  padding: .3em;
}
button {
  font-size: 1.2em;
  padding: .5em;
  pointer-events: auto;
}
					

JavaScript

const list1 = document.getElementById('list1');
const list2 = document.getElementById('list2');
const button = document.getElementById('swap');
button.addEventListener('click', e => {
  selection = window.getSelection();
  for (let i = 0; i < selection.rangeCount; i++) {
    const range = selection.getRangeAt(i);
    if (range.commonAncestorContainer === list1 ||
        range.commonAncestorContainer.parentNode === list1) {
      const documentFragment = range.extractContents();
      list2.appendChild(documentFragment);
    } else if (range.commonAncestorContainer === list2 ||
        range.commonAncestorContainer.parentNode === list2) {
      const documentFragment = range.extractContents();
      list1.appendChild(documentFragment);
    }
  }
});
					

结果

规范

规范 状态 注释
DOM
The definition of 'Range.extractContents()' in that specification.
实时标准 无变化。
Document Object Model (DOM) Level 2 Traversal and Range Specification
The definition of 'Range.extractContents()' in that specification.
过时 最初的规范。

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
extractContents Chrome Yes Edge 12 Firefox 4 IE 9 Opera 9 Safari Yes WebView Android Yes Chrome Android Yes Firefox Android 4 Opera Android Yes Safari iOS Yes Samsung Internet Android Yes

图例

完整支持

完整支持

另请参阅

元数据

  • 最后修改: