var portalLoader = {
dojo : {
url:"/Dojo/dojo-release-1.6.1/"
},
call : (function() {
function hasFile(tag, url) {
var contains = false;
var files = document.getElementsByTagName(tag);
var type = tag == "script" ? "src" : "href";
for ( var i = 0, len = files.length; i < len; i++) {
if (files[i].getAttribute(type) == url) {
contains = true;
break;
}
}
return contains;
}
function fileExt(url) {
var att = url.split('.');
var ext = att[att.length - 1].toLowerCase();
return ext;
}
function loadFile(element, callback, parent) {
var p = parent && parent != undefined ? parent : "head";
var h = document.getElementsByTagName(p)[0];
h.appendChild(element);
if (callback) {
callback();
}
}
function loadCssFile(files, callback) {
var urls = files && typeof (files) == "string" ? [ files ] : files;
for ( var i = 0, len = urls.length; i < len; i++) {
var cssFile = document.createElement("link");
cssFile.setAttribute('type', 'text/css');
cssFile.setAttribute('rel', 'stylesheet');
var filePath = portalLoader.dojo.url + urls[i];
cssFile.setAttribute('href', filePath);
if (!hasFile("link", filePath)) {
loadFile(cssFile, callback);
}
}
}
function loadScript(files, callback, parent) {
var urls = files && typeof (files) == "string" ? [ files ] : files;
for ( var i = 0, len = urls.length; i < len; i++) {
var script = document.createElement("script");
script.setAttribute('type', 'text/javascript');
var filePath = portalLoader.dojo.url + urls[i];
script.setAttribute('src', filePath);
if (!hasFile("script", filePath)) {
loadFile(script, callback, parent);
}
}
}
function toArray(obj) {
if (obj.length == null)
return new Array(obj);
else
return obj;
}
function tryToArray(obj) {
try {
return toArray(obj);
} catch (e) {
try {
return obj.split(",");
} catch (e) {
return obj;
}
}
}
function includeFile(options) {
if (options) {
var cssFiles = tryToArray(options.css);
var scriptFiles = tryToArray(options.script);
loadCssFile(cssFiles, function() {
//loadScript(scriptFiles, null, "body");
loadScript(scriptFiles);
});
}
}
return {
require : includeFile
};
})()
};
var require = function(options) {
portalLoader.call.require(options);
};
<script type="text/javascript" src="js/portalLoader.js"></script>
<script type="text/javascript">
require({
css:["dojo/resources/dojo.css","dijit/themes/tundra/tundra.css"],
script:["dojo/dojo.js"]
});
</script>