1

AJAX と文字列操作を組み合わせて、完全な HTML ページを文字列として生成する JavaScript 関数があります。すなわち:

var markup='<html><body>Hello world!</body></html>';

これは非常に単純化されたものであり、HTML 構造が予測可能であることは保証できません。そのコンテンツをページに表示するにはどうすればよいですか? 文字列には完全な HTML ページが含まれているため、最も理にかなっていると思いiframeますが、マークアップを iframe に挿入する方法がわかりません。

「プロキシ」として使用するためだけに別の物理ファイルを作成したくないので、1 つの HTML ページに完全に含めることができるソリューションを望んでいます。

4

5 に答える 5

4
var iframe = document.createElement("iframe");
var doc = iframe.contentDocument; // a about:blank
doc.open();
doc.write(htmlstring);
doc.close();

私のために働きます。<object>また、属性に data-uri を含む s を使用してdata、たとえば xml ドキュメントを表示しました。

var object = document.createElement("object");
object.setAttribute('data', "data:text/xml, "+xmlstring);

<object data="about:blank">iframe の代わりに a を使用して、上書きする contentDocument を取得することもできます。

于 2012-04-17T16:48:05.977 に答える
1

このようにjQueryからiframeのhtmlを変更できます

function get_me_html(){
    return '<html><body>Hello world!</body></html>'
}

$('iframe').contents().find('html').html(get_me_html())

ここでこれを実際に見てくださいhttp://jsfiddle.net/anuraguniyal/Kegc3/7/

于 2012-04-17T17:08:09.837 に答える
0

iframe を忘れて、jQuery.html()を検索し、頭を切り取ります。

于 2012-04-17T16:31:38.077 に答える
0

HTMLドキュメント内にモーダル子ウィンドウを作成し、探しているもののようなことを行うことができるjQueryのthickboxのようなものを試してみるべきだと思いますが、そのためには、作成できるDIV内にコンテンツをダンプする必要がありますはえ。

以下の投稿が役立つかどうかを確認してください: http://blogs.digitss.com/technology/hacking-jquery-thickbox/

于 2012-04-17T16:32:14.917 に答える
-1

jQueryを使用すると、これを行うことができます:

var markup='<html><body>Hello world!</body></html>';
$('#iframe').contents().find('body').html(markup);

または、不要なタグを取り除くことができる場合:

markup = markup.replace(/(</?html>|</?body>)/gi, "");
$('#divId').html(markup);

注: 入力 HTML がどのように見えるかはわかりません。このコードを実行する前に、実際に HTML を削除できることを確認してください。これは、開始に役立つ例です。

これは、次のような DIV を使用しています。

<div id="divId">Content will go here</div>
于 2012-04-17T16:32:54.207 に答える