用 Javascript 替换包含头部的整个页面

我有一个传递字符串的 Javascript 函数。传递的字符串是一个完整的网页,包括标题。我需要 Javascript 来替换整个当前页面,标题和所有的新内容。

考虑下面的 HTML 文件:

<html>
<head>
<script language="Javascript">
<!--
var newContent='<html><head><script language="Javascript">function Hi() {alert("Goodbye World");}</script></head><body onload="Hi();">New Content</body></html>';
function ReplaceContent(NC) {
document.body.innerHTML=NC;
}
function Hi() {
alert("Hello World");
ReplaceContent(newContent);
}
-->
</script>
</head>
<body onload="Hi();">
Original Content
</body>
</html>

在本例中,传递的字符串是:

<html><head><script language="Javascript">function Hi() {alert("Goodbye World");}</script></head><body onload="Hi();">New Content</body></html>

当然,因为“ ReplaceContent”函数只是替换了主体,而不是标题,所以我从来没有收到过“告别世界”的提醒。

忽略“为什么我想这样做”, 如何动态替换整个页面,包括页眉和 javascript 函数?

请记住,“ source”html (上面的‘ newContent’)只作为字符串存在,它不存在于任何服务器上,所以我不能直接重定向到它。

我对上面的“ ReplaceContent”进行了哪些更改,以便在内容被替换后出现“ bye World”警报?请记住,我不能事先知道 newContent 变量的值! !

57193 次浏览

Use document.write.

<html>
<head>
<script language="Javascript">
<!--
var newContent='<html><head><script language="Javascript">function Hi() {alert("Goodbye World");}</script></head><body onload="Hi();">New Content</body></html>';
function ReplaceContent(NC) {
document.open();
document.write(NC);
document.close();
}
function Hi() {
ReplaceContent(newContent);
}
-->
</script>
</head>
<body>
Original Content
<a href="javascript:Hi()">Replace</a>
</body>
</html>

Script

javascript:document.open('text/html');document.write('<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>HAI</title></head><body><h1>OMG HAI2U!!!1</h1></body></html>');document.close();

DOM snapshot of the resulting page

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>HAI</title></head><body><h1>OMG HAI2U!!!1</h1></body></html>
$("html").html('your page html here');

var script = document.createElement('script');
script.src = 'http://code.jquery.com/jquery-1.7.2.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);

document.getElementsByTagName("html")[0].innerHTML Contains both head and body tags. I Usually avoid document.open\write\close