Flask不在静态目录中执行Javascript

时间:2014-12-24 08:29:24

标签: javascript python flask

概述:我在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>

1 个答案:

答案 0 :(得分:2)

一种可能的解释:

如果您的<script>标记位于文档的<head>中,则会在加载正文之前执行。在这种情况下,ID "screen_name"的元素尚未加载,因此var x = document.getElementById('screen_name');将不包含您期望的结果。

如果是这种情况,请尝试将<script>标记移到文档的末尾。