My guess is that in your DOM-only solution you did something like:
var script = document.createElement(‘script’);
script.src = something;
//do stuff with the script
First of all, that won’t work because the script is not added to the document tree, so it won’t be loaded. Furthermore, even when you do, execution of javascript continues while the other script is loading, so its content will not be available to you until that script is fully loaded.
You can listen to the script’s load event, and do things with the results as you would. So:
var script = document.createElement(‘script’);
script.onload = function () {
//do stuff with the script
};
script.src = something;
document.head.appendChild(script); //or something of the likes
jQuery’s $.getScript() is buggy sometimes, so I use my own implementation of it like:
jQuery.loadScript = function (url, callback) {
jQuery.ajax({
url: url,
dataType: ‘script’,
success: callback,
async: true
});
}
and use it like:
if (typeof someObject == ‘undefined’) $.loadScript(‘url_to_someScript.js’, function(){
//Stuff to do after someScript has loaded
});