2010-09-13 3 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> 

Как вы можете увидеть в моем фрагменте кода, я хотел бы принести HTML из page2.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, он не будет выполнен). –

+0

@ Рихард: отлично работает для меня, IE8 и IE6 - http://jsfiddle.net/vxzYH/. –

0

Не можете ли вы просто заменить html в теге тела $('body').html(newContent)?

+0

Я думал то же самое. –

+1

№. Возвращенный HTML завершен также с html, head и другими тегами. Он возвращается как обычный текст, поэтому я не могу легко извлечь из него только содержимое тела. –

Смежные вопросы