Skip to content

Instantly share code, notes, and snippets.

@leggetter
Created January 12, 2011 06:55
Show Gist options
  • Save leggetter/775792 to your computer and use it in GitHub Desktop.
Save leggetter/775792 to your computer and use it in GitHub Desktop.
How to dynamically load JavaScript and CSS
var OptaAshes = {
scriptBase: "widget/",
require:function(s) {
try{
// inserting via DOM fails in Safari 2.0, so brute force approach
if(s.type == "text/javascript") {
document.write('<script type="text/javascript" src="'+s.url+'"><\/script>');
} else {
document.write('<link rel="stylesheet" href="'+ s.url +'" />');
}
} catch(e) {
// for xhtml+xml served content, fall back to DOM methods
if(s.type == "text/javascript") {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = s.url;
document.getElementsByTagName('head')[0].appendChild(script);
} else {
var style = document.createElement('link');
style.rel = 'stylesheet';
style.href = s.url;
document.getElementsByTagName('head')[0].appendChild(style);
}
}
},
load:function() {
var scripts = document.getElementsByTagName("script");
var script;
var scriptBase = this.scriptBase;
for(var i = 0, l = scripts.length; i < l; ++i) {
script = scripts[i];
if( script.src.indexOf("/opta.cricket.js") != -1 )
{
scriptBase = script.src.replace("/opta.cricket.js", "/");
}
}
if(typeof jQuery == 'undefined') {
OptaAshes.require({"type":"text/javascript", "url":scriptBase+"jquery-1.4.4.min.js"});
}
var script_urls = [
{"type":"text/css", "url":scriptBase+"default.css"},
// {"type":"text/css", "url":this.scriptBase+"red.css"},
{"type":"text/javascript", "url":scriptBase+"jquery-ui-1.8.6.custom.min.js"},
{"type":"text/javascript", "url":"http://js.kwwika.com/beta/api.js"},
{"type":"text/javascript", "url":scriptBase+"date.js"},
{"type":"text/javascript", "url":scriptBase+"cricket.js"}
];
for(s in script_urls) {
OptaAshes.require(script_urls[s]);
}
}
}
OptaAshes.load();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment