引用js文件的问题
为了能够看起来比较好看的引用js文件,我写了一个类
$UnitManager$ = new function ()
{
this.__getExtension = function (name)
{
var index = name.lastIndexOf(".") ;
if ( index == -1 ) return "" ;
else return name.substr(index+1) ;
}
this.register = function (uName, uRegVar)
{
uName = this.__getExtension(uName) ;
if ( uName.toLowerCase() == "js" || uName == "" ) //js 文件
return ;
if (! this[uName])
this[uName] = uRegVar ;
}
this.using = function (uName)
{
var name = this.__getExtension(uName) ;
if ( name.toLowerCase() == "js" || name == "" ) //js 文件,内部支持操作
{
var VarName = "SCRIPT__{0}".format(uName.replace(/[\/\\]/g, "_").replace(/\.js/gi, "").trim()) ;
if ( this[VarName] )
return ;
else
{
var aScript = window.document.createElement("SCRIPT") ;
if ( name.isEmpty() ) uName += ".js" ;
aScript.src = uName ;
aScript.defer = true ;
aScript.language = "JavaScript" ;
this[VarName] = aScript ;
window.document.appendChild(aScript) ;
return ;
}
}
if ( this[name] )
return this[name].using(uName) ;
}
this.toString = function ()
{
return "[static Unit Manager]" ;
}
}
function using(unitName)
{
return $UnitManager$.using(ScriptPath + unitName) ;
}
这样,在使用的时候就可以
<script language="JavaScript" defer>
using("xxx") ;//使用xxx.js
</script>
但是现在问题是document会在这些js文件载入结束前载入,这样就导致html文件出错。
这个问题在本地运行的时候基本没有,但是如果在网上使用,由于网络的延时,就会导致一些对象未加载完成就被使用,结果就无法得到正确的结果。
我使用了document.onreadystatechange事件判断
document.onreadystatechange = function ()
{
if (this.readyState == "complete")
for (var o in $UnitManager$)
if ( o.substr(0, 8) == "SCRIPT__" )
document.getElementById("text1").value += $UnitManager$[o].src + "=" + $UnitManager$[o].readyState + "\n" ;
}
结果显示出来的script的readyState状态都是loading,结果我就不知道该怎么处理了
不知各位大哥有没有什么好的解决办法
(本地使用没有问题,但是网络上面使用的话就不对了)