我可以预先使用JavaScript中的内容填充iframe吗?

时间:2012-04-17 16:26:46

标签: javascript jquery html iframe

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

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

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

我不想创建另一个物理文件只是用作“代理”,因此我希望能够完全包含在一个HTML页面中的解决方案。

5 个答案:

答案 0 :(得分:4)

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

适合我。我还在<object>属性中使用data s和data-uri,例如显示xml文档:

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

您还可以使用<object data="about:blank">代替iframe来覆盖contentDocument。

答案 1 :(得分: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/

答案 2 :(得分:0)

忘记iframe,查找jQuery.html()并修剪头部。

答案 3 :(得分:0)

我认为你应该尝试类似jQuery thickbox的东西,它可以在你的HTML文档中创建一个模态子窗口,并且做的事情有点像你正在寻找的但是是的,你必须将你的内容转储到你的DIV中可以随时创建。

查看以下帖子是否有帮助: http://blogs.digitss.com/technology/hacking-jquery-thickbox/

答案 4 :(得分:-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>