Skip to content

Instantly share code, notes, and snippets.

@AWaselnuk
Forked from carolineschnapp/gist:5397337
Last active February 16, 2021 13:34
Show Gist options
  • Save AWaselnuk/1392d25b6d5cb79ae681 to your computer and use it in GitHub Desktop.
Save AWaselnuk/1392d25b6d5cb79ae681 to your computer and use it in GitHub Desktop.
Conditionally load jQuery via loadScript
/* Sample JavaScript file added with ScriptTag resource.
This sample file is meant to teach best practices.
Your app will load jQuery if it's not defined.
Your app will load jQuery if jQuery is defined but is too old, e.g. < 1.7.
Your app does not change the definition of $ or jQuery outside the app.
*/
(function(){
/* Load Script function we may need to load jQuery from the Google's CDN */
/* One source: http://snipplr.com/view/18756/loadscript/ */
var loadScript = function(url, callback){
var script = document.createElement("script");
script.type = "text/javascript";
// If the browser is Internet Explorer.
if (script.readyState){
script.onreadystatechange = function(){
if (script.readyState == "loaded" || script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
// For any other browser.
} else {
script.onload = function(){
callback();
};
}
script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
};
/* This is my app's JavaScript */
var myAppJavaScript = function($){
// Do this and do that, using $.
$('body').append('<p>Your app is using jQuery version '+$.fn.jquery+'</p>');
};
/* If jQuery has not yet been loaded or if it has but it's too old for our needs,
we will load jQuery from the Google CDN, and when it's fully loaded, we will run
our app's JavaScript. Set your own limits here, the sample's code below uses 1.7
as the minimum version we are ready to use, and if the jQuery is older, we load 1.9. */
if ((typeof jQuery === 'undefined') || (parseInt($.fn.jquery.split('.')[1]) < 7)) {
loadScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js', function(){
var jQuery191 = jQuery.noConflict(true);
myAppJavaScript(jQuery191);
});
} else {
myAppJavaScript(jQuery);
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment