It probably won’t be often, but sometimes you may find yourself having the need to load Javascript dynamically using XHR.
To name a few use cases:
- Developing a plugin architecture for an HTML5 application.
- In order to extend your application’s functionality.
- Load certain Javascript depending the browser environment.
A demo can be found here and the source here.
This method of loading an external Javascript file simply appends a dynamically generated script tag into the head of the HTML document. Note that this only loads the Javascript file; if you’re creating a plugin architecture, you’ll probably need to unload it somehow (you’ll likely want to implement an unload method within the Javascript object you loaded).
Implementation is easy, just specify a Javascript file to load using the load method of the fetchJs object:
var js = new fetchJs();
js.load('a.js');
If you want to issue a callback, you can use the following syntax:
var js = new fetchJs();
js.load({
url: 'a.js',
callback: function () { console.log('a.js loaded!'); }
});
Want to load consecutive scripts?
var js = new fetchJs();
js.load({
url: 'a.js',
callback: function () {
js.load({
url: 'a_nutter.js',
callback: function () {
console.log('a_nutter.js successfully loaded!');
}
});
console.log('a.js successfully loaded!');
}
});
Just remember that the innermost Javascript will load last (something to keep in mind especially if you have scripts dependent on one another).
NOTE: You won’t be able to fetch a Javascript file across different domains or protocol (i.e. HTTP/HTTPS). The safest way to do this is via CORS, which requires you have access to the hosting server.