Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

External JavaScript file is not getting added when running on Flask

I have an HTML file named showMap.html:

<!DOCTYPE html> <html>  <head>   <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />   <meta http-equiv="content-type" content="text/html; charset=UTF-8" />   <title>Map</title>   <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">   </script>   <script type="text/javascript" src="js/map.js"></script> </head>  <body onload="showPosition()">   <div id="map_canvas" style="width:500px;height:500px;"></div> </body>  </html> 

And another JavaScript file map.js is placed in the js folder of the same directory.

This code works fine when the HTML file is loaded, but this does not work when I run it in the server.

I use Python's Flask framework for back-end programming and the funny thing is that the same thing will work well if I expand the JavaScript code inside the HTML file. The only problem is with the external file.

like image 599
Tony Avatar asked Feb 05 '13 15:02

Tony


People also ask

HOW include JavaScript file externally?

To include an external JavaScript file, we can use the script tag with the attribute src . You've already used the src attribute when using images. The value for the src attribute should be the path to your JavaScript file. This script tag should be included between the <head> tags in your HTML document.

Why is external JavaScript not working?

“external javascript file not working” Code Answer's Most likely, the problem is that you are including your js file in a head tag or somewhere above your main content. ... You should be able to add the js file in a script tag. The page loads first then JavaScript.


2 Answers

Serve the map.js file as a static resource:

  • move the file to a static/ subdirectory of your package

  • generate a static URL for it in a Jinja2 template like so:

     <script type="text/javascript"          src="{{ url_for('static', filename='map.js') }}"></script> 

The filename parameter takes a relative path; you can use subdirectories was needed.

like image 199
Martijn Pieters Avatar answered Oct 22 '22 11:10

Martijn Pieters


Step 1: Create folder with name static on project root

Step 2: Add static files in static folder

Step 3 Add in template

<script type="text/javascript" src="{{ url_for('static', filename = 'hello.js') }}"></script> 
like image 30
AiOsN Avatar answered Oct 22 '22 12:10

AiOsN