2017-02-22 60 views
3

我知道这个问题以前已经被问到过,但大多数答案只替换了body标签,或者需要jQuery。我希望能够使用普通的JavaScript替换整个页面内容,包括DOCTYPE。另外,我不想用window.location.href重定向页面。把这个简单的页面(index.html的):替换整个页面内容(使用DOCTYPE)

<!DOCTYPE html> 
<html> 

<head> 
    <title>Test</title> 
</head> 

<body> 
    <p>Testing...</p> 
</body> 

</html> 

与AJAX加载另一个页面后:

var page; 
var file = new XMLHttpRequest(); 
file.open('GET', './toload.html'); 
file.onreadystatechange = function() { 
    page = file.responseText; 
} 
file.send(); 

我想抹去我的网页内容和显示toload.html的内容,那就是:

<!DOCTYPE html> 
<html> 

<head> 
    <title>Loaded</title> 
</head> 

<body> 
    <p>Hello. This page is now loaded!</p> 
</body> 

</html> 

我该怎么做?

+2

'document.write(page);'会做到这一点。你有没有理由不使用ajax框架?如果您要使用JQuery,您可以执行'$('html')。html(page);' – Edward

+1

[使用Javascript替换整个页面包括头]的可能重复(http://stackoverflow.com/questions/4292603/替换 - 完整页包括头使用javascript) –

+0

@AndyRay我已经读过那个页面,但我不认为这些方法中的任何一个都会替换DOCTYPE。 –

回答

0

没关系。我决定我可以替换<html>标签中的内容。我使用的代码是:

var contents = "Sorry : (IMPORT FAILED..."; 
var file = new XMLHttpRequest(); 
file.open("GET", "/toload.html", false); 
file.onreadystatechange = function() { 
    contents = file.responseText; 
} 
file.send(null); 
document.getElementsByTagName("html")[0].innerHTML = contents; 

无论如何感谢您的精彩答案!

2

我能得到的最接近的是:

document.getElementsByTagName('html')[0].innerHTML=""; 

生病更新这个答案,如果我能找出为什么你不能清除DOM的根结点。