我正在使用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文档并打开它,一切正常。请告诉我哪里错了?
答案 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>