|
|
|
window.BI = window.BI || {};
|
|
|
|
|
|
|
|
_.extend(BI, {
|
|
|
|
$defaultImport: function (options, type) {
|
|
|
|
var config;
|
|
|
|
if (BI.isObject(options)) {
|
|
|
|
config = $.extend({
|
|
|
|
op: "resource",
|
|
|
|
path: null,
|
|
|
|
type: null,
|
|
|
|
must: false
|
|
|
|
}, options);
|
|
|
|
config.url = BI.servletURL + "?op=" + config.op + "&resource=" + config.path;
|
|
|
|
} else {
|
|
|
|
config = {
|
|
|
|
url: BI.servletURL + "?op=resource&resource=" + options,
|
|
|
|
type: arguments[1],
|
|
|
|
must: arguments[2]
|
|
|
|
};
|
|
|
|
}
|
|
|
|
this.$import(config.url, config.type, config.must);
|
|
|
|
},
|
|
|
|
$import: function () {
|
|
|
|
var _LOADED = {}; // alex:保存加载过的
|
|
|
|
function loadReady (src, must) {
|
|
|
|
var $scripts = $("head script, body script");
|
|
|
|
$.each($scripts, function (i, item) {
|
|
|
|
if (item.src.indexOf(src) != -1) {
|
|
|
|
_LOADED[src] = true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
var $links = $("head link");
|
|
|
|
$.each($links, function (i, item) {
|
|
|
|
if (item.href.indexOf(src) != -1 && must) {
|
|
|
|
_LOADED[src] = false;
|
|
|
|
$(item).remove();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// must=true 强行加载
|
|
|
|
return function (src, ext, must) {
|
|
|
|
loadReady(src, must);
|
|
|
|
// alex:如果已经加载过了的,直接return
|
|
|
|
if (_LOADED[src] === true) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (ext === "css") {
|
|
|
|
var link = document.createElement("link");
|
|
|
|
link.rel = "stylesheet";
|
|
|
|
link.type = "text/css";
|
|
|
|
link.href = src;
|
|
|
|
var head = document.getElementsByTagName("head")[0];
|
|
|
|
head.appendChild(link);
|
|
|
|
_LOADED[src] = true;
|
|
|
|
} else {
|
|
|
|
// alex:这里用同步调用的方式,必须等待ajax完成
|
|
|
|
$.ajax({
|
|
|
|
url: src,
|
|
|
|
dataType: "script", // alex:指定dataType为script,jquery会帮忙做globalEval的事情
|
|
|
|
async: false,
|
|
|
|
cache: true,
|
|
|
|
complete: function (res, status) {
|
|
|
|
/*
|
|
|
|
* alex:发现jquery会很智能地判断一下返回的数据类型是不是script,然后做一个globalEval
|
|
|
|
* 所以当status为success时就不需要再把其中的内容加到script里面去了
|
|
|
|
*/
|
|
|
|
if (status == "success") {
|
|
|
|
_LOADED[src] = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}()
|
|
|
|
});
|