var Turbo = {
head : function(o) {
// Подгрузка JS, CSS
var count = 0;
var scriptTag, linkTag, id;
var scriptFiles = o.js || {};
var cssFiles = o.css || {};
var head = document.getElementsByTagName('head')[0];
for ( var k in cssFiles) {
// Парсим название CSS-файла
// Достаем из него ID и если не нашли <link> с таким ID, создаем и присваиваем ID (избегаем повторной загрузки)
id = Turbo._makeId(cssFiles[k]);
if(!document.getElementById(id)) {
// Создаем
linkTag = document.createElement('link');
linkTag.type = 'text/css';
linkTag.rel = 'stylesheet';
linkTag.href = cssFiles[k];
linkTag.id = id;
head.appendChild(linkTag);
}
}
for ( var k in scriptFiles) {
// Парсим название JS-файла
// Достаем из него ID и если не нашли <script> с таким ID, создаем и присваиваем ID (избегаем повторной загрузки)
id = Turbo._makeId(scriptFiles[k]);
scriptTag = document.getElementById(id);
if(!scriptTag) {
scriptTag = document.createElement('script');
scriptTag.type = 'text/javascript';
scriptTag.src = scriptFiles[k];
scriptTag.id = id;
head.appendChild(scriptTag);
// Если есть callback, вызываем его при загрузке всех данных
if (typeof o.callback == "function") {
if (scriptTag.readyState) { //IE
scriptTag.onreadystatechange = function() {
if (scriptTag.readyState == "loaded"
|| scriptTag.readyState == "complete") {
count++;
if (count == scriptFiles.length)
o.callback.call();
}
};
} else { // other browsers
scriptTag.onload = function() {
count++;
if (count == scriptFiles.length)
o.callback.call();
}
}
}
} else {
if (typeof o.callback == "function") {
count++;
if(count == scriptFiles.length) {
o.callback.call();
}
}
}
}
},
_makeId : function(url) {
// Парсим URL:
// Убираем строку запроса (?) если она состоит из 10 цифр и заменяем все не алфавитно-цифровые символы на дефис.
var parts = url.split('?');
if( parts.length == 2 && /^([\d]{10})$/.exec(parts[1]) ) {
url = parts[0];
}
return url.replace(/[^a-z0-9-_]/gi,'-').replace(/([-]{2,})/gi,'-');
}
}
Turbo.head({
css: ["a.css", "b.css"], // массив CSS
js: ["a.js", "b.js"], // массив JS
callback: function() { // вызывается после загрузки всех JS или нет, если JS нет.
}
});
zend@sandbox:~$ landscape-sysinfo
System load: 0.03 Users logged in: 1
Usage of /: 10.7% of 32.57GB IP address for vlan24: 10.165.49.47
Memory usage: 18% IP address for vlan20: 192.168.20.116
Swap usage: 0% IP address for tun1: 172.30.1.2
Processes: 98
Graph this data and manage this system at:
https://landscape.canonical.com/
zend@sandbox:~$
.btn-breadcrumb .btn:last-child {
padding:6px 18px 6px 24px;
width: 100%;
}