Youss
Youss

Reputation: 4212

How to load a script file and execute it?

I have feedburner script which displays feeds, it looks like this:

<script src="http://feeds.feedburner.com/cnn/HIkg?format=sigpro" type="text/javascript" ></script>

I want to load this script which is on a different html page, so basically I'm loading html file with this script in it using:

$('#' + items[i]).load('content/' + items[i] + '.html');

This piece of code does load the html page but the script is not executed(working). How do I get the script to work once loaded?

Upvotes: 1

Views: 266

Answers (2)

Nope
Nope

Reputation: 22329

According to the documentation :

Script Execution
When calling .load() using a URL without a suffixed selector expression, the content is passed to .html() prior to scripts being removed. This executes the script blocks before they are discarded. If .load() is called with a selector expression appended to the URL, however, the scripts are stripped out prior to the DOM being updated, and thus are not executed.

If your url is just a plain url without a selector specified than the script should execute before it is removed.

Check the value of items[i] and check if it is a plain url without a selector or not.

If the url looks fine, you might be running into a cross-side scripting issue. The documentation also mentions:

Due to browser security restrictions, most "Ajax" requests are subject to the same origin policy; the request can not successfully retrieve data from a different domain, subdomain, or protocol.

If possible though I still would recommend for any script to be in an external file as that is good practice and doesn't clutter the html. Then you can use .getScript() as recommended by Raminson.

Upvotes: 2

Ram
Ram

Reputation: 144659

You can use the $.getScript() utility function:

Load a JavaScript file from the server using a GET HTTP request, then execute it.

$.getScript("/test.js")

Upvotes: 1

Related Questions