正如大卫所提到的,使用innerHTML
,你几乎是在浏览器的摆布。如果您想控制序列化,您可以自己遍历父文档的 DOM,将节点的字符串表示附加到缓冲区。这将花费更长的时间并涉及更多代码,但会导致对输出的完全控制。
像这样的东西(伪代码):
function serializeAttributes(node, buffer) {
for (attribute in node.attributes) {
buffer.append(' ' + attribute.name + '="' + attribute.value + '"');
}
}
function serializeChildren(node, buffer) {
for (child in node.childNodes) {
if (child is a text node) {
buffer.append(child.value);
} else if (child is an element) {
// You can also add checks to avoid going into IFrames, etc.
serializeElement(child, buffer);
}
}
}
function serizalizeElement(node, buffer) {
buffer.append('<' + node.tagName);
serializeAttributes(node, buffer);
if (node.hasChildren) {
buffer.append('>');
serializeChildren(node, buffer);
buffer.append('</' + node.tagName + '>');
} else {
buffer.append('\>');
}
}
serializeNode(window.parent.document);