2012-07-03 53 views
0

在stackoverflow上还有很多其他帖子提出几乎相同的问题,但在迄今为止我读到的所有答案中,他们没有解决如何实质上替换iframe的整个文档,包括DOCTYPE和html标签。使用jQuery替换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的,缺少lang属性上的HTML标签,缺少头部和身体标记。

有什么建议吗? (注意,只是改变了iframe的src属性必要的网址是不可能在这个应用程序,由于各种因素)

回答

0

尝试一些普通的JavaScript来代替:

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

FIDDLE

+0

看起来像在工作Chrome,这项工作可以可靠地跨浏览器吗? (或者至少IE8 +,Firefox,Chrome,Safari) –

+0

不知道,在所有浏览器中都没有测试过,但是至少在Chrome和FF上工作过。 – adeneo

+0

也适用于Safari 5.尽管如此,还没有试过IE。 –

相关问题