aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/document/adoptnode/index.html
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/document/adoptnode/index.html
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/api/document/adoptnode/index.html')
-rw-r--r--files/zh-cn/web/api/document/adoptnode/index.html98
1 files changed, 98 insertions, 0 deletions
diff --git a/files/zh-cn/web/api/document/adoptnode/index.html b/files/zh-cn/web/api/document/adoptnode/index.html
new file mode 100644
index 0000000000..1f502e20a6
--- /dev/null
+++ b/files/zh-cn/web/api/document/adoptnode/index.html
@@ -0,0 +1,98 @@
+---
+title: Document.adoptNode()
+slug: Web/API/Document/adoptNode
+translation_of: Web/API/Document/adoptNode
+---
+<div>{{ ApiRef("DOM") }}</div>
+
+<div> </div>
+
+<p>从其他的document文档中获取一个节点。 该节点以及它的子树上的所有节点都会从原文档删除 (如果有这个节点的话), 并且它的<code><a href="/en-US/docs/DOM/Node.ownerDocument" title="DOM/Node.ownerDocument">ownerDocument</a></code> 属性会变成当前的document文档。 之后你可以把这个节点插入到当前文档中。</p>
+
+<p><strong>从Gecko 1.9 (Firefox 3)开始支持</strong></p>
+
+<h2 id="Syntax" name="Syntax">语法</h2>
+
+<pre class="syntaxbox"><var>node</var> = <em>document</em>.adoptNode(<var>externalNode</var>);
+</pre>
+
+<dl>
+ <dt><code><span style="display: none;"> </span><span style="display: none;"> </span><span style="display: none;"> </span>node</code></dt>
+ <dd>导入当前文档的新节点. 新节点的 <code><a href="https://developer.mozilla.org/zh-cn/DOM/Node.parentNode" title="zh-cn/DOM/Node.parentNode">parentNode</a></code> 是 <code>null</code>, 因为它还没有插入当前文档的文档树中,属于游离状态.<span style="display: none;">  </span><span style="display: none;"> </span></dd>
+ <dt><code>externalNode</code></dt>
+ <dd>将要从外部文档导入的节点。</dd>
+</dl>
+
+<h2 id="Example" name="Example">例子</h2>
+
+<pre class="brush: js">// 该函数用来从本文档的第一个iframe中获取第一个element元素,
+// 并插入到当前文档树中
+function getEle(){
+    var iframe = document.getElementsByTagName("iframe")[0],
+        ele = iframe.contentWindow.document.body.firstElementChild
+        if(ele){
+            document.body.appendChild(document.adoptNode(ele))
+        }else{
+            alert("没有更多元素了")
+        }
+}
+document.getElementById("move").onclick = getEle
+</pre>
+
+<p>HTML文档</p>
+
+<pre class="brush: html">// index.html
+
+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+ &lt;title&gt;index.html&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+ &lt;iframe src="iframe.html"&gt;&lt;/iframe&gt;
+ &lt;button id="move"&gt;移动元素&lt;/button&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+
+// iframe.html
+
+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+ &lt;title&gt;iframe.html&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+ &lt;h1&gt;Hello&lt;/h1&gt;&lt;h3&gt;My world!&lt;/h3&gt;
+&lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<h2 id="Notes" name="Notes">笔记</h2>
+
+<p>有时候调用adopNode可能会失败因为节点资源来自不同的源,但是这不应该是浏览器的实现问题。</p>
+
+<p>In general the <code>adoptNode</code> call may fail due to the source node coming from a different implementation, however this should not be a problem with browser implementations.</p>
+
+<blockquote>
+<p>译者注:</p>
+
+<p>该方法不但可以从iframe中获取adopt元素,在同一document文档下的不同两个元素中也可以使用,该方法可以实现从左边栏列表中选取某些元素加载到右边栏的功能。</p>
+</blockquote>
+
+
+<p></p><p>将外部文档的节点插入当前文档之前,你必须使用 <a href="/zh-CN/docs/Web/API/Document/importNode" title="将外部文档的一个节点拷贝一份,然后可以把这个拷贝的节点插入到当前文档中."><code>document.importNode()</code></a> 从外部文档导入源节点,或者使用 <a href="/zh-CN/docs/Web/API/Document/adoptNode" title="从其他的document文档中获取一个节点。 该节点以及它的子树上的所有节点都会从原文档删除 (如果有这个节点的话), 并且它的ownerDocument 属性会变成当前的document文档。 之后你可以把这个节点插入到当前文档中。"><code>document.adoptNode()</code></a>导入源节点,
+ 想要了解更多的 <a href="/zh-CN/docs/Web/API/Node/ownerDocument" title="Node.ownerDocument 只读属性会返回当前节点的顶层的 document 对象。"><code>Node.ownerDocument</code></a> 问题,请参考 <a class="external" href="http://www.w3.org/DOM/faq.html#ownerdoc" rel="noopener">W3C DOM FAQ</a>.</p>
+
+ <p>即使你不执行导入动作,就执行插入外部文档中的节点.Firefox目前也不会报错(如果严格按标准执行,很多已有的网站都无法正常运行).
+ 我们鼓励开发者严格按标准修改自己已有的不符合上述标准的代码.</p><p></p>
+
+<h2 id="Specification" name="Specification">规范</h2>
+
+<ul>
+ <li><a href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#Document3-adoptNode">DOM Level 3 Core: Document.adoptNode</a></li>
+</ul>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li><a href="/en-US/docs/DOM/document.importNode">document.importNode</a></li>
+</ul>