Javascript没有与节点js模块一起执行

时间:2013-03-24 13:24:17

标签: javascript node.js

我正在使用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 个答案:

答案 0 :(得分:1)

浏览器只运行(客户端)JavaScript,如果他们正在加载HTML文档并且JavaScript是通过<script>元素引用的。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您正在使用浏览器访问服务器。浏览器需要HTML。在您的情况下,通话res.end(data)会将HTML发送到浏览器。无论Javascript或其他任何内容是data,浏览器都会将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>