jQuery を使用して Ajax 経由で完全な HTML5 ドキュメントを要求しています。それらを解析し、要素をメイン ページの DOM に転送できるようにしたいと考えています。理想的には、モバイルを含むすべての主要なブラウザーで使用できます。プロセスをできるだけ速くしたいので、iframeを作成したくありません。Chrome と Firefox を使用すると、次のことができます。
var contents = $(document.createElement('html'));
contents[0].innerHTML = data; // data : HTML document string
これにより、少し驚くべきことに、doctype がなくても適切なドキュメントが作成されます。ただし、IE9 では、innerHTML を使用してhtml
要素のコンテンツを設定することはできません。私は運なしで次のことをやろうとしました:
DOM を作成し、開き、書き込み、閉じます。問題: で
doc.open
、IE9 が という例外をスローしますUnspecified error.
。var doc = document.implementation.createHTMLDocument(''); doc.open(); doc.write(data); doc.close();
ActiveX DOM を作成します。今回は、結果は良くなりましたが、ドキュメント間で要素を転送/コピーすると、IE9 がクラッシュします。IE8 のサポート (adoptNode / importNode のサポート) がないため悪い。
var doc = new ActiveXObject('htmlfile'); doc.open(); doc.write(data); doc.close(); contents = $(doc.documentElement); document.adoptNode(contents);
ドキュメント間で要素を転送するのではなく、要素を再帰的に再作成することを考えていましたが、転送するノードがたくさんある可能性があることを考えると、それはコストのかかる作業のようです。私の最後の ActiveX の例は、おそらく IE8 以前で動作する可能性が高いので気に入っています (少なくとも解析の場合)。
これに関するアイデアはありますか?head
繰り返しますが、 andを解析できる必要があるだけでなく、body
これらの新しい要素をメイン dom に追加できる必要もあります。
どうもありがとう!