1

我有一个 JavaScript 函数,它结合了 AJAX 和字符串操作来生成一个完整的 HTML 页面作为字符串。IE:

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

这是非常简化的,我不能保证 HTML 结构是可预测的。如何在页面上显示该内容?我认为 aniframe最有意义,因为字符串包含完整的 HTML 页面,但我不知道如何将标记注入 iframe。

我不想创建另一个物理文件只是用作“代理”,所以我希望有一个可以完全包含在一个 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);

您还可以使用 a<object data="about:blank">而不是 iframe 来获取要覆盖的 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

我认为您应该尝试类似 jQuery Thickbox 之类的东西,它可以在您的 HTML 文档中创建一个模态子窗口,并做一些类似于您正在寻找的事情,但是是的,您必须将您的内容转储到您可以创建的 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 回答