gpt4 book ai didi

javascript - 尝试附加到文档时,responseXML 中缺少 head 子项

转载 作者:行者123 更新时间:2023-12-03 11:12:03 24 4
gpt4 key购买 nike

我有一个相当简单的要求,我正在尝试实现:

  1. 构造一个 XMLHttpRequest 来加载另一个页面
  2. 迭代其他页面的 head 元素中找到的内容
  3. 对于找到的每个元素,将其附加到当前(调用)页面中的 head 元素

我发现非常奇怪和令人困惑的是,其他页面的 head 中的一些预期元素丢失了。但是,一旦我删除将每个找到的元素附加到调用页面的单行代码,其他页面的 head 中的所有子元素就会神奇地出现。

例如,假设另一个页面应该有 2 个 meta 元素、3 个 link 元素和 4 个 script 元素。由于某种原因,我的 XMLHttpRequest 对象的 responseXML 返回时只有 1 个 meta 元素、1 个 link 元素和 3 个 script 元素.

下面是我真正想要执行的代码行。但是当我将它放在 HTML 源代码中时,responseXML 中的一些 head 子项丢失了。您可以在 this bin 上看到它的实际效果。 this Visualforce page .

head.appendChild(header.head.children[i]);

下面显示了注释掉的相同代码。当我这样做时,失踪的 child 就会再次出现。您可以在 this bin 上看到它的实际效果。 this Visualforce page .

//head.appendChild(header.head.children[i]);

是什么导致子元素消失?如果您打开 JavaScript 控制台 (Chrome) 或 Web 控制台 (Firefox),您可以非常清楚地看到加载上述两个页面的差异。

最佳答案

我仍然对为什么发生这种情况的真正问题的答案感到好奇。我有一些想法,但首先是:将合并代码更改为以下代码片段。

  Communities.mergeHeader = function(header) {
console.log("header: %o", header);

var head = document.getElementsByTagName("head")[0];
head.innerHTML = header.head.outerHTML;
};

我会跟进其原因。

后续

DEMO

好的。完全偏离了方向。您看到这些节点“消失”的原因是因为您实际上正在取代它们:

js在这里我们编写移动代码

var list = document.getElementById('list'),
btn = document.getElementById('btn');

document.head.appendChild(list);

html 之前

<ul id='list'>
<li>Have</li>
<li>you</li>
<li>ever</li>
<li>needed</li>
<li>to</li>
<li>keep</li>
<li>a</li>
<li>list</li>
<li>in</li>
<li>your</li>
<li>head?</li>
</ul>

<p>Now you can:
<button id='btn'>List -> Head</button>
</p>

html2之后

头部元素

移动后,您可以看到主体缺少列表。

<head>
<meta charset="UTF-8">
<meta name="robots" content="noindex">
<link rel="canonical" href="http://codepen.io/presstep/pen/a385456d87e7f2c084dc338c1d885c09/?editors=101">
<style class="cp-pen-styles">
body {
font: 300 25px/1 sans-serif;
}
ul {
list-style-type: square;
}
p {
font-size: 14px;
}
</style>
<ul id="list">
<li>Have</li>
<li>you</li>
<li>ever</li>
<li>needed</li>
<li>to</li>
<li>keep</li>
<li>a</li>
<li>list</li>
<li>in</li>
<li>your</li>
<li>head?</li>
</ul>
</head>
<body>
<p>Now you can:
<button id='btn'>List -> Head</button>
</p>
</body>

关于javascript - 尝试附加到文档时,responseXML 中缺少 head 子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27534641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com