1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cmsleo-require

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
require.js 3.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
资料室的茶会 Отправлено 16.07.2018 11:41 3f00ed9
/*!
* require
* http://git.oschina.net/cmsleo/require
* author liaoyifan
* Date: 2018-07-16
*/
(function(window) {
var doc = window.document, head = doc.head
|| doc.getElementsByTagName("head")[0] || doc.documentElement, configure;
function config(conf) {
configure = {
baseUrl : conf.baseUrl || '.',
group : conf.group || {},
path : conf.path || {}
};
}
function isArr(arr) {
return Array.isArray ? Array.isArray(arr) : Object.prototype.toString
.call(arr) === '[object Array]';
}
function isStr(str) {
return typeof str === 'string';
}
function getUrls(path) {
if (isStr(path)) {
return getUrl(path);
} else if (isArr(path)) {
var urls = [];
for (var i = 0; i < path.length; i++) {
var url = getUrl(path[i]);
if (isStr(url))
urls.push(url);
else if (isArr(url)) {
for (var j = 0; j < url.length; j++)
urls.push(url[j]);
}
}
return urls;
}
}
function getUrl(path) {
var confUrl = configure.baseUrl + '/', confGroup = configure.group, confPath = configure.path;
if (isStr(path)) {
var group = confGroup[path];
if (group && isArr(group)) {
var urls = [];
for (var i = 0; i < group.length; i++)
urls.push(confUrl + confPath[group[i]] + '.js');
return urls;
} else
return confUrl + confPath[path] + '.js';
}
}
function asyncJs(url, callback) {
// javascript
var script = doc.createElement('script');
script.src = url;
script.async = true;
script.onload = script.onerror = script.onreadystatechange = function() {
if (!script.readyState || script.readyState === 'loaded'
|| script.readyState === 'complete') {
// Handle memory leak in IE
script.onload = script.onreadystatechange = null
// Remove the script
if (script.parentNode)
script.parentNode.removeChild(script);
// Dereference the script
script = null;
if (callback)
callback(window);
}
}
// add to head
head.insertBefore(script, head.firstChild);
}
function async(path, callback) {
var urls = getUrls(path);
if (isStr(urls))
asyncJs(urls, callback);
else if (isArr(urls)) {
var wait = urls.length;
var fn = function() {
wait--;
if (!wait)
callback(window);
};
for (var i = 0; i < wait; i++)
asyncJs(urls[i], fn);
}
}
function createActiveXHR() {
try {
return new window.ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
}
}
function createStandardXHR() {
try {
return new window.XMLHttpRequest();
} catch (e) {
}
}
function syncJs(url) {
var xhr = window.ActiveXObject ? createActiveXHR()
: createStandardXHR();
xhr.open('GET', url, false);
xhr.send(null);
var script = doc.createElement('script');
script.text = xhr.responseText;
head.insertBefore(script, head.firstChild);
}
function sync(path) {
var urls = getUrls(path);
if (isStr(urls))
syncJs(urls);
else if (isArr(urls)) {
for (var i = 0; i < urls.length; i++)
syncJs(urls[i]);
}
}
function syncCross(url){
var script = doc.createElement('script');
script.src = url;
head.insertBefore(script, head.firstChild);
}
window.require = {
syncCross : syncCross,
asyncJs : asyncJs,
syncJs : syncJs,
async : async,
sync : sync,
config : config
};
})(window);

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/cmsleo-require.git
git@api.gitlife.ru:oschina-mirror/cmsleo-require.git
oschina-mirror
cmsleo-require
cmsleo-require
master