0

javascript 文字列変数に含まれる html ドキュメント全体があり、それをページの一部にレンダリングする必要があります。フレームを使用する必要がありますか? どうやってするか?

4

3 に答える 3

3

iframe の場合:

<iframe id="myiframe"></iframe>

var frame= document.getElementById('myiframe');
var doc= frame.contentDocument? frame.contentDocument : frame.contentWindow.document; // IE compatibility
doc.open('text/html');
doc.write(documenthtml);
doc.close();

または、不要な部分 (DOCTYPE や <head> 要素など) を切り取ることができる場合は、任意の要素に innerHTML を記述できます。通常、正規表現または文字列処理で [X][HT]ML を処理するのは非常に悪い考えですが、本体が常に正確な文字列 '<body>...</body>' 内に含まれていることがわかっている場合は、などになることはありません。コメントまたはスクリプト セクションに隠された '<body>' シーケンスを回避できる可能性があります。

正直なところ、現在のブラウザーは非常に寛容であり、通常、HTML ドキュメント全体を div の innerHTML に書き込み、そこに doctype と '<head>' を含めることさえできます! しかし、それは少しいたずらです:

<div id="mycontent"></div>

document.getElementById('mycontent').innerHTML= htmldocument;

正規表現を使用せずに本文コンテンツを抽出するために、両方の方法を組み合わせた厄介なハックを次に示します。

<div id="mycontent"></div>

var frame= document.createElement('iframe');
frame.style.display= 'none';
document.body.appendChild(frame);
var doc= frame.contentDocument? frame.contentDocument : frame.contentWindow.document;
doc.open('text/html');
doc.write(documenthtml);
doc.close();
document.getElementById('mycontent').innerHTML= doc.body.innerHTML;
document.body.removeChild(frame);
于 2009-09-14T15:27:16.133 に答える
0
document.getElementById('container').innerHTML = string;

これにより、「コンテナ」のIDを持つ要素(おそらくdiv)内の文字列の内容がロードされます。

于 2009-09-14T15:20:54.183 に答える
0
myHtmlString = 'some stuff'; // whatever your big html string is
el = document.getElementById("myTarget"); // where you'd like the html to end up
el.innerHTML = myHtmlString; // set the HTML of el to be your big string.
于 2009-09-14T15:21:58.733 に答える