2010-09-13 43 views
2

比方說,我有這個頁面(page.html中):如何用外部HTML替換整個HTML?

<html> 
    <body> 
    <h1>AAA</h1> 
<script type="text/javascript"> 
    //<![CDATA[ 
$(document).ready(function() { 

$.get('page2.html', function(data){ 
    // I want to replace the entire HTML with the HTML of page2.html 
    // but this doesnt' work 
    $('html').replaceWith(data); 
}); 

}); //]]> 
</script> 
    </body> 
</html> 

另一個頁面(page2.html):

<html> 
    <body> 
    <h1>BBB</h1> 
    </body> 
</html> 

正如你可以在我的代碼片段看,我想取來自page2.html的HTML,並用取回的響應替換page.html的全部內容。

如何做到這一點?

回答

7

您可以使用document.open()創建一個新的頁面,document.write()的寫入數據,然後document.close()來完成:

document.open("text/html"); 
document.write(data); 
document.close(); 

https://developer.mozilla.org/en/DOM/document.open

+0

順便說一句,這在IE中有一些問題(當page2.html中有一些JavaScript,它不會得到執行)。 – 2010-09-13 14:26:25

+0

@Richard:對我來說工作很好,IE8和IE6 - http://jsfiddle.net/vxzYH/。 – 2010-09-13 15:18:52

0

難道你不能只是用$('body').html(newContent)替換body標籤中的html嗎?

+0

我以爲同樣的事情。 – 2010-09-13 10:49:34

+1

不可以。返回的HTML也包含html,head和其他標籤。它以純文本形式返回,因此我無法從中輕鬆提取正文內容。 – 2010-09-13 11:11:39