用jQuery替换iframe的全部内容(包括doctype和html标签)

时间:2012-07-03 16:21:42

标签: jquery ajax iframe

stackoverflow上还有很多其他帖子提出几乎相同的问题,但在我到目前为止所读到的所有答案中,它们都没有解决如何基本上替换iframe的整个文档,包括DOCTYPE和html标签。

我正在通过jQuery.ajax请求检索整个页面的HTML,并尝试使用返回的HTML作为iframe的新HTML。以下是从ajax请求返回的HTML示例:

<!DOCTYPE html>
<html lang="en-US">
    <head>
        <link rel="stylesheet" type="text/css" media="all" href="main.css">
        <title>Test Page</title>
    </head>
    <body>
        <h1>Heading</h1>
    </body>
</html>

然后我通过以下方法将此HTML注入iframe:

$('#my-iframe').contents().find('html').html(returnedHtml);

正如大多数关于此主题的其他帖子所建议的那样。但是,当我检查iframe的内容时,文档的结构如下:

<html>
    <link rel="stylesheet" type="text/css" media="all" href="main.css">
    <title>Test Page</title>
    <h1>Heading</h1>
</html>

注意缺少DOCTYPE,缺少html标签上的lang属性,缺少头部和身体标签。

有什么建议吗? (请注意,由于各种因素,在此应用中无法将iframe的src属性更改为必需的网址)

1 个答案:

答案 0 :(得分:0)

尝试一些简单的javascript:

iframe = document.getElementById('my-iframe');
iframe.contentWindow.document.open()
iframe.contentWindow.document.write(returnedHtml);​

FIDDLE