5

我正在 XML DOM 对象中构建 HTML 代码,以用作使用 XSL 模板的 div 元素的 innerHTML 的内容。传统上,我们创建一个新的 XML DOM 文档,并将输入参数添加为 XML 元素,以便通过 javascript 进行转换。这一切都非常耗时,因为我们基本上是从另一个代表我们当前帐户的 XML 文档中手动挑选数据并将数据复制到临时 XML DOM 文档中。

我想做的是克隆帐户文档的相关节点(即客户信息)并将其用作转换的基础。我不想直接使用帐户文档,因为我希望能够添加特定于转换的输入,而无需更改帐户对象。

对于通常包含 2000 多个元素的文档中通常少于 200 个元素的所需节点,使用 .cloneNode(true) 的效率如何?目标平台是 IE6,没有外部工具(即 ActiveX)。

4

3 回答 3

3

CloneNode 非常高效,但这样做会消耗更多内存。

要考虑的另一种方法是使用模板对象和处理器,将附加/更改的数据作为参数传递给处理器,并将原本克隆为输入元素的元素传递给处理器。不过,这种方法需要相当重要的 XSL 模块。

于 2008-11-08T10:52:16.663 回答
2

IE 在某些事情上会失败。

例如,当您将副本添加到 DOM 时,将不会检查选中的单选框/复选框。

例子:

http://webbugtrack.blogspot.com/2008/03/bug-199-cant-clone-form-element-in-ie.html

http://webbugtrack.blogspot.com/2007/08/bug-242-setattribute-doesnt-always-work.html

要查看 IE 实际返回的内容,请尝试在其中一个页面的地址栏中将 url 替换为此,然后按 enter。

javascript:'<xmp>'+window.document.body.outerHTML+'</xmp>';

如果您对结果感到满意,那就太好了!但我认为您最终会对 IE 返回的结果不满意(在 DOM 中,以及这个“字符串”值等价物。

于 2008-11-07T18:56:12.223 回答
0

如果您不需要表单元素,cloneNode 是一个真正可靠的工具......

- 在插入 ajax-data 时,效率令人难以置信......

然而,尤其是 IE 有名称属性问题的历史,如果您插入数据,解决其中任何一个问题都是不方便的......

- 我不太了解您的 XSL(T) 使用方式,对我来说,这听起来像是将加油站用作(不是!-)将 1960 WV 更改为 2008 斯柯达的方便场所......

通常他们有一些共同的技术,虽然它的使用方式不同,计算机化在某种程度上只是一个小问题,主要问题几乎是任何其他方式!o]

您是否需要表单元素?-)

于 2008-11-07T23:05:28.320 回答