1. ホーム
  2. javascript

[解決済み] Javascriptを使ったヘッドを含むページ全体の置き換え

2023-07-08 16:12:51

質問

文字列を渡されるJavascript関数があります。 渡された文字列は、ヘッダーを含むWebページ全体です。 私は、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')は文字列としてのみ存在し、サーバー上のどこにも存在しないので、私はそれにリダイレクトすることができないことをご留意ください。

コンテンツを置き換えたら "Goodbye World" のアラートが表示されるようにするには、上記の "ReplaceContent" にどのような変更を加えればよいでしょうか。 私はnewContent変数の値を事前に知ることができないことに留意してください!

どのように解決するのですか?

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>