1

我正在使用 node.js 在本地运行 HTTP 服务器,每当有人从服务器请求时,服务器都会通过res.end(data). 这里,data包含 JavaScript 代码。

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

<script>浏览器仅在加载 HTML 文档并且通过元素引用 JavaScript 时才运行(客户端)JavaScript 。

如果您只是直接加载 JavaScript URL,那么它们会将其呈现为文本。

于 2013-03-24T13:26:31.310 回答
1

要在浏览器中执行 JavaScript,它必须在<script>元素内。文档必须text/html作为内容类型提供,才能作为 HTML 提供。

于 2013-03-24T13:26:38.700 回答
0

您正在使用浏览器访问服务器。浏览器需要 HTML。在您的情况下,调用res.end(data)会将 HTML 发送到浏览器。无论是否data使用 Javascript 或其他任何内容,浏览器都将解析data为 HTML。因此,您可以在浏览器上以纯文本形式看到 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 回答
0

您不能像那样将可执行脚本返回给客户端。尝试将您的 JavaScript 作为返回的 html 页面的一部分返回。将您的返回字符串视为将显示在客户端上的所有内容。要执行它,您必须将它放在脚本块中,而不仅仅是作为 html 中的字符串内联

于 2013-03-24T13:27:53.303 回答