[英]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.