Замена всей страницы, включая голову Использование 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" заменяет только тело, но не заголовок, я никогда не получаю предупреждение "Goodbye World".
Не обращая внимания на "почему я хотел бы это сделать", Как я могу динамически заменить всю страницу, включая заголовок и функции javascript?
Помните, что "исходный" html ("newContent" выше) существует только в виде строки, он нигде не существует на сервере, поэтому я не могу просто перенаправить его.
Какие изменения я внесу в "ReplaceContent" выше, чтобы оповещение "Goodbye World" появилось после замены контента? Пожалуйста, имейте в виду, что я не могу знать заранее значение переменной newContent !!
Ответы
Ответ 1
Используйте 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>
Ответ 2
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 итоговой страницы
<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>
Ответ 3
$("html").html('your page html here');
Ответ 4
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);
Ответ 5
document.getElementsByTagName("html")[0].innerHTML
Содержит теги head
и body
.
Я обычно избегаю document.open\write\close