繁体   English   中英

Node.js无法发送脚本?

[英]Node.js Cannot send script ?

我有这个简单的node.js服务器代码,它发送alert

var sys = require("sys"),
my_http = require("http");
my_http.createServer(function(request,response){

    response.writeHeader(200, {"Content-Type": "application/javascript","Content-Length": "alert('');".length });
    response.write("alert('');");
    response.end();
}).listen(8080);
sys.puts("Server Running on 8080"); 

服务器已启动并正在运行:

在此处输入图片说明

而且我确实看到了响应的正确标题:

在此处输入图片说明

但是脚本没有执行!

另外,控制台显示:

资源被解释为文档,但是以MIME类型application / javascript传输:“ http://xxxx.com:8080/ ”。

题 :

我缺少什么?如何使此警报起作用?

对于要由浏览器执行的脚本,我宁愿使用Content-Type:html并发送

<script type="text/javascript">alert('test');</script>

在ajax存在之前,这是我用于“ javascript流式传输”的古老技巧。

为此,浏览器必须知道它是一个HTML文档(或者必须从现有的HTML上下文中初始化“ javascript url调用”)

像这样:

<!DOCTYPE html>
<html>
<body>
<iframe src="your_js_node_url_here">
</body>
</html>

您可以流化your_js_node_url的任何JavaScript,并保持“始终打开”连接。

当然,这有点“老派”,但无需Websocket即可启用某种“代码推送”。

为了使浏览器执行您的JavaScript,必须有一些信息告诉它这是可执行代码(与要格式化和显示的文本相反)。

您可以在HTML文档中发送JavaScript,并为此使用SCRIPT标记,如以下示例所示:

var sys = require("sys"),
my_http = require("http");
my_http.createServer(function(request,response){

    response.writeHeader(200, {"Content-Type": "text/html", });
    response.write("<html><body><script>alert('hello');</script></body>");
    response.end();
}).listen(8080);
sys.puts("Server Running on 8080"); 

另一种方法是通过浏览器上已经存在的另一个JavaScript程序(a-la AJAX)来获取JavaScript,然后让其他程序执行它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM