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

Jos*_*hua 58 html 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>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,传递的字符串是:

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

但是,当然,由于"ReplaceContent"功能只是取代了身体而不是标题,我从来没有得到"再见世界"的警报.

忽略"我为什么要这样做",如何动态替换整个页面,包括标题和javascript函数?

请记住"source"html(上面的'newContent')仅作为字符串存在,它在任何地方的服务器上都不存在,所以我不能只重定向到它.

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

请注意:涉及"你为什么要这样做"的答案将被低估.

Dar*_*con 53

使用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>
Run Code Online (Sandbox Code Playgroud)


Fre*_*ing 14

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();
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


Yon*_*iXw 11

document.getElementsByTagName("html")[0].innerHTML包含headbody标签。我通常会避免document.open\write\close

  • document.querySelector('html').innerHTML = '我的内容'; (4认同)

Rob*_*ben 6

$("html").html('your page html here');
Run Code Online (Sandbox Code Playgroud)

  • @NijilNair:我不明白你所说的另一页是什么意思。您的意思是您在一个页面中嵌入了多个“iframe”吗? (2认同)