【问题标题】:Adding external javascript to page that will be sent by a server将外部 javascript 添加到将由服务器发送的页面
【发布时间】:2020-02-08 19:01:44
【问题描述】:

我正在构建一个小型服务器,它使用 javascript 发送带有脚本的页面,当我尝试在浏览器中打开它时它可以工作,但是如果我从服务器请求页面,页面会被接收,但不是脚本,所以我得到这些错误:

文件之间缺少Script.js:

看起来很奇怪,因为从网络会话中我可以看到状态为 200 的脚本请求:

我试图添加的 js 文件是 Chart.js,所以我不能在内部添加它,它会变得无法使用它,但现在服务器只是 python 中的几行代码用SimpleHTTPRequestHandler,我估计要换了,可能是因为SimpleHTTPRequestHandler不能处理多个文件请求?

这是代码,试图制作一个sn-p,但它在那里也不起作用(可能只是我以前从未写过sn-p):

HTML:

<!doctype html>
<html>
<head>
   <script src="script.js"></script>
</head>
<body>
   <p id = "paragraph"></p>
   <script>
      document.getElementById('paragraph').innerHTML = sayHello();
   </script>
</body>
</html>

JS:

function sayHello(){
   return "HelloWorld!"
}

这是python服务器脚本:

from http.server import HTTPServer, BaseHTTPRequestHandler


class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        with open("index.html", "r") as page:
            self.wfile.write(page.read())


httpd = HTTPServer(("192.168.1.100", 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()

【问题讨论】:

  • 您是否可能不小心将&lt;script&gt;&lt;/script&gt; 放入 您的script.js 文件中?如果是这样,请将它们删除。
  • 顺便说一句,您可以将&lt;meta charset="utf-8"&gt; 添加到您的&lt;head&gt; 以消除字符编码错误。如果您正在寻找一个不错的 Python Web 框架,请尝试flask
  • @ChrisG,不,我不是,这也只是一个例子,问题出在chart.js,肯定没有,无论如何感谢您的建议
  • 我怀疑这是因为第 1 行中的 expected expression, got '&lt;' error。不过,您应该将您的 python 代码添加到问题中,因为看起来这个问题主要是关于这个,而不是关于 JS。跨度>
  • 你的 python 服务器只返回 HTML 文件。这就是为什么您的 HTML 加载但您的 JavaScript 没有加载的原因。当请求 JavaScript 文件时,服务器返回导致 SyntaxError: expected expression, got '&lt;' 错误的 HTML 文件。

标签: python server


【解决方案1】:

我认为你得到一个带有 id、标签名或类名的元素并添加文件

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onload = function() {
    callFunctionFromScript();
}
script.src = 'path/to/your-script.js';
head.appendChild(script);

还有check this link

【讨论】:

  • 感谢您的回答,但问题仍然存在,我也不是这个平台的专家,但我认为您应该根据要求调整您的代码,而不仅仅是复制它
  • 您可以使用&lt;script&gt; 标记来加载外部JavaScript。这段代码是正确的,但不需要解决问题。
  • @Zera 你的意思是像 吗?如果我尝试过但它不起作用,但正如另一位用户提到的那样,这可能是服务器问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-03
  • 2017-12-15
  • 2011-09-27
  • 2018-06-19
  • 1970-01-01
相关资源
最近更新 更多