概述:我在virtualbox中使用Ubuntu 14.04,运行基于Python的Flask模块来托管带有html,javascript,jquery和php元素的本地门户。
预期结果:我有一个名为test.js的静态JS文件,我希望在模板portal.html加载时提供该文件。
问题:HTML页面正确加载,我在终端中收到test.js的GET状态200,但是JS脚本没有执行(即标签中没有'Twitter' id =“screen_name”)。我检查了localhost:5000 / static / js / test.js并且脚本存在。我尝试直接在HTML中包含完全相同的JS脚本,而不是作为静态文件,它工作正常。
问题:如果我的静态JS脚本被请求,为什么它没有执行?
目录结构:
portal
- portal_server.py
- templates
- portal.html
- static
- img
- css
- js
- test.js
test.js的内容:
var x = document.getElementById('screen_name');
x.textContent = 'twitter';
HTML的相关元素:
<h3 id="screen_name"></h3>
HTML的脚本元素:
<script src="{{ url_for('static', filename='js/test.js') }}"></script>
答案 0 :(得分:2)
一种可能的解释:
如果您的<script>
标记位于文档的<head>
中,则会在加载正文之前执行。在这种情况下,ID "screen_name"
的元素尚未加载,因此var x = document.getElementById('screen_name');
将不包含您期望的结果。
如果是这种情况,请尝试将<script>
标记移到文档的末尾。