Подтвердить что ты не робот

Замена всей страницы, включая голову Использование 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 !!

4b9b3361

Ответ 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