我有一个JavaScript函数,它结合使用AJAX和字符串操作来生成一个完整的HTML页面作为字符串。即:
var markup='<html><body>Hello world!</body></html>';
这是非常简化的,我不能保证HTML结构是可预测的。如何在页面上显示该内容?我认为iframe
最有意义,因为字符串包含完整的HTML页面,但我不知道如何将标记注入iframe。
我不想创建另一个物理文件只是用作“代理”,因此我希望能够完全包含在一个HTML页面中的解决方案。
答案 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的htmlfunction get_me_html(){
return '<html><body>Hello world!</body></html>'
}
$('iframe').contents().find('html').html(get_me_html())
答案 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>