guy
7 years ago
4 changed files with 181 additions and 2 deletions
@ -0,0 +1,60 @@
|
||||
$.extend(BI, { |
||||
$defaultImport: function () { |
||||
var ars = arguments; |
||||
if (ars[0] != null) { |
||||
ars[0] = BI.servletURL + '?op=resource&resource=' + ars[0]; |
||||
} |
||||
this.$import.apply(null, ars); |
||||
}, |
||||
|
||||
$import: function () { |
||||
var _LOADED = {}; // alex:保存加载过的
|
||||
function loadReady(src, must) { |
||||
var $scripts = $("head 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, |
||||
complete: function (res, status) { |
||||
/* |
||||
* alex:发现jquery会很智能地判断一下返回的数据类型是不是script,然后做一个globalEval |
||||
* 所以当status为success时就不需要再把其中的内容加到script里面去了 |
||||
*/ |
||||
if (status == 'success') { |
||||
_LOADED[src] = true; |
||||
} |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
}() |
||||
}); |
Loading…
Reference in new issue