将文档字符串加载到iframe中

时间:2009-08-17 15:25:55

标签: javascript jquery html ajax iframe

我有一个字符串(通过ajax获取),这是一个完整的html文档(doctype为< / html>)。有没有人知道将其加载到iframe的方法?

我不能简单地指定在iframe的src中返回文档的url,因为响应可能来自帖子,并且重复它可能会产生不良影响。另外,我无法第一次将它提交给iframe,因为我无法完全预测结果将是一个文档,而不是一些json。基本上,我不记得网址,我必须能够使用我的版本(字符串)。

jQuery是公平的游戏,因为那是我正在使用的。

2 个答案:

答案 0 :(得分:1)

@LarsW 不需要使用 jQuery。例如,如果 html 字符串是驻留在文件系统中的文件,但不能从 www 访问(或者您必须在 PHP 中构造它),则可以使用此 PHP 代码

$htmlText = "data:text/html;base64,".base64_encode(file_get_contents("someFolder/file.html"));
echo "<iframe src='$htmlText'></iframe>";

我遇到了没有 base64 扩展的问题,因为 file.html 中的引号会破坏 HTML 代码。

答案 1 :(得分:0)

您可以使用data URI执行此操作。数据URI是一种加载内联数据的方法,就像您正在加载外部数据一样。它们看起来像这样:data:<mimetype>,<data>。对于HTML,mimetype为text/html,在您的情况下,数据类似于:<!DOCTYPE><html><head><title>Iframe</title></head><body>Hi!</body></html>。如果我们将它放在数据URI中,我们会得到如下内容:

data:text/html,<!DOCTYPE><html><head><title>Iframe</title></head><body>Hi!</body></html>

当我们将其设置为src的{​​{1}}时,它看起来像这样。

&#13;
&#13;
iframe
&#13;
var string = '<!DOCTYPE><html><head><title>Iframe</title></head><body>Hi!</body></html>',
  iframe = $('#iframe')

iframe.attr('src', 'data:text/html,' + string)
&#13;
&#13;
&#13;