gpt4 book ai didi

javascript - 在 HTML 文件中包含 XML 内联

转载 作者:搜寻专家 更新时间:2023-11-01 04:27:59 24 4
gpt4 key购买 nike

我试图在 HTML 文件中包含一些(有效的)静态 XML 数据,然后用 JavaScript 解析它。下面的测试用例在 Firefox、Opera 和 Chrome 中运行良好(我得到了预期的节点列表和深度),但在 IE8 中失败了(所有节点都处于相同的深度,结束标记包含在节点列表中)。

问题:如何修复代码使其在 IE 中按预期工作?

代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Odd Ie behavior - test case</title>
<script type="text/javascript">

function p(text) {
var out = document.getElementById("output");
out.innerHTML += text + "<br>";
}

function walkDom(node, depth) {
var i, il;
if (node.nodeType === 1) {
p("Node( " + depth + "): " + node.nodeName);
if (node.childNodes && node.childNodes.length > 0) {
for (i = 0; i < node.childNodes.length; i += 1) {
il = node.childNodes[i];
walkDom(il, depth + 1);
}
}
}
}

function init() {
var data = document.getElementById("data");
walkDom(data, 0);
}
</script>
</head>
<body onload="init()" id="body">
<div id="data" style="display: none"><data><ele><foo>Foo</foo><bar></bar></ele></data></div>
<div id="output"></div>
</body>
</html>

“正确”输出

Node( 0): DIV
Node( 1): DATA
Node( 2): ELE
Node( 3): FOO
Node( 3): BAR

IE 输出

Node( 0): DIV
Node( 1): DATA
Node( 1): ELE
Node( 1): FOO
Node( 1): /FOO
Node( 1): BAR
Node( 1): /BAR
Node( 1): /ELE
Node( 1): /DATA

最佳答案

看起来 IE 不会将您的 XML 节点视为 DOM 节点,而 Firefox、Chrome 和 Opera 会。

可以说,IE 的行为是正确的,因为这些节点不是 HTML DOM 的一部分。

回答您的问题 - 此行为取决于浏览器作者如何实现 DOM 导航,您不能“强制”浏览器更改它。

IE 在 HTML 表单中有自己的嵌入式 XML 概念,称为 data islands ,或许您可以将其用于 IE。

关于javascript - 在 HTML 文件中包含 XML 内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1863050/

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