1

私は node.js を使用して HTTP サーバーをローカルで実行しています。誰かがサーバーから要求するたびに、サーバーは を介し​​て応答しres.end(data)ます。ここには、 dataJavaScript コードが含まれています。

document.body.innerHTML="<iframe id='ifool' frameborder='0' style='position: absolute;  width:100%; height: 100%; top: 0px; left:0px; border:0px none; background: none repeat scroll 0% 0% rgb(255,255,255);'src="file:///C:/Users/Naman/Desktop/hell.htm" sandbox='allow-same-origin allow-forms allow-scripts' /></iframe>"

しかし、この JavaScript は実行されておらず、ブラウザにそのまま表示されているだけです。

<script>このスクリプトを要素で囲んでいません。その場合、ページには何も表示されません。ただし、そのページ ソースを別の HTML ドキュメントとして保存して開くと、すべて正常に動作します。どこが間違っているのか教えてください。

4

4 に答える 4

1

ブラウザーは、HTML ドキュメントをロードし、JavaScript が<script>要素を介して参照されている場合にのみ (クライアント側の) JavaScript を実行します。

JavaScript URL を直接ロードするだけの場合、代わりにテキストとしてレンダリングされます。

于 2013-03-24T13:26:31.310 に答える
1

ブラウザで JavaScript を実行するには、JavaScript が<script>要素内にある必要があります。ドキュメントはtext/html、HTML として提供されるコンテンツ タイプとして提供される必要があります。

于 2013-03-24T13:26:38.700 に答える
0

そのような実行可能なスクリプトをクライアントに返すことはできません。返される html ページの一部として JavaScript を返してみてください。戻り文字列は、クライアントに表示されるすべてのものと考えてください。実行するには、html の文字列としてインラインにするだけでなく、スクリプト ブロックに配置する必要があります。

于 2013-03-24T13:27:53.303 に答える
0

ブラウザでサーバーにアクセスしています。ブラウザは HTML を想定しています。あなたの場合、呼び出しres.end(data)は HTML をブラウザーに送信します。dataが Javascript であるか、それ以外であるかに関係なく、ブラウザはdataHTML として解析します。したがって、ブラウザでは JavaScript がプレーン テキストで表示されます。

あなたがしたいことは、JavaScriptが埋め込まれたHTMLページを返すことです:

<!DOCTYPE html>
<html>
  <head>
    <title>Your HTML page with Javascript</title>
  </head>

  <body>
    <h1>Html here</h1>

    <script>
      alert('javascript here');
    </script>
  </body>
</html>
于 2013-03-24T13:41:14.437 に答える