我有一个相当简单的要求,我正在尝试实施:
head
元素中的内容head
元素我发现非常奇怪和令人困惑的是,另一页head
中的某些预期元素缺失。但是,一旦我删除了将每个找到的元素附加到调用页面的单行代码,另一页head
中的所有子元素都会神奇地出现。
例如,假设其他页面应包含2个meta
元素,3个link
元素和4个script
元素。出于某种原因,我的XMLHttpRequest对象的responseXML
只返回1个meta
元素,1个link
元素和3个script
元素。
下面是我真正想要执行的代码行。但是当我在HTML源代码中使用它时,head
中的一些responseXML
个孩子会丢失。您可以在 this bin 或this Visualforce page上看到它。
head.appendChild(header.head.children[i]);
下面显示了相同的代码注释掉了。当我这样做时,失踪的孩子重新出现。您可以在 this bin 或this Visualforce page上看到它。
//head.appendChild(header.head.children[i]);
是什么导致子元素消失?如果您打开JavaScript控制台(Chrome)或Web控制台(Firefox),您可以非常清楚地看到加载上述两个页面的区别。< / p>
答案 0 :(得分:1)
我仍然对为什么发生的真实问题的答案感到好奇。我有一些想法,但首先是:将您的合并代码更改为以下代码段。
Communities.mergeHeader = function(header) {
console.log("header: %o", header);
var head = document.getElementsByTagName("head")[0];
head.innerHTML = header.head.outerHTML;
};
我会跟进关于原因的想法。
确定。得到完全侧面跟踪。你看到那些节点&#34;消失的原因&#34;是因为你实际上取代了它们:
<强> 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>