5

XSL テンプレートを使用して、div 要素の innerHTML のコンテンツとして使用される XML DOM オブジェクト内に HTML コードを作成しています。伝統的に、新しい XML DOM ドキュメントを作成し、javascript を介して変換用の XML 要素として入力パラメーターを追加します。基本的に、現在のアカウントを表す別の XML ドキュメントからデータを手動で選択し、そのデータを一時的な XML DOM ドキュメントにコピーしているため、これはすべて非常に時間がかかります。

私がやりたいことは、アカウント ドキュメント (顧客情報など) の関連するノードを複製し、それを変換の基礎として使用することです。アカウント オブジェクトを変更せずに変換固有の入力を追加できるようにしたいので、アカウント ドキュメントを直接使用したくありません。

通常 2000 以上の要素を持つドキュメントから、通常 200 未満の要素の目的のノードに .cloneNode(true) を使用するのはどのくらい効率的ですか? ターゲット プラットフォームは IE6 で、外部ツール (つまり ActiveX) はありません。

4

3 に答える 3

3

CloneNode は非常に効率的ですが、そのようにするとより多くのメモリが消費されます。

考慮すべきもう 1 つのアプローチは、Template オブジェクトとプロセッサを使用し、追加/変更されたデータをパラメーターとしてプロセッサに渡し、そうでなければ入力要素として複製した要素を渡すことです。ただし、このアプローチでは 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 年の Skoda に交換するための便利な場所としてガソリン スタンドを使用しているように思えます。

確かに、彼らはいくつかの共通の技術を持っていますが、それは同じようには使われていません。ある意味でのコンピュータ化は小さな問題にすぎず、主要な問題はほとんどの方法にあります!o]

フォーム要素が必要ですか?-)

于 2008-11-07T23:05:28.320 に答える