프로그램/html
내가 만든 스크립트 로더
milktea.kang
2010. 12. 14. 12:08
function FileLoader(){
this.Header = document.getElementsByTagName("head")[0];
this.Files = new Array();
this.AddScriptFile = function(src){
var scripts = document.getElementsByTagName("script");
var IsLoaded = false;
for(i=0;i<scripts.length;i++){
if(scripts[i].src.replace(/([\W\w]+\w+\.\w+)(\?[\w\W]+)?/, "$1") == src){
IsLoaded = true;
}
}
if(!IsLoaded){
var file = document.createElement("script");
file.type = "text/javascript";
//file.charset = "shift-jis";
file.src = src;
this.Files.push(file);
}
}
this.AddCSSFile = function(href){
var styles = document.getElementsByTagName("link");
var IsLoaded = false;
for(i=0;i<styles.length;i++){
if(styles[i].href.replace(/([\W\w]+\w+\.\w+)(\?[\w\W]+)?/, "$1") == href){
IsLoaded = true;
}
}
if(!IsLoaded){
var file = document.createElement("link");
file.type = "text/css";
file.rel = "stylesheet";
//file.charset = "shift-jis";
file.href = href;
this.Files.push(file);
}
}
this.Load = function(p_callback){
var ThisObj = this;
var callback = p_callback || function(){}
if(this.Files.length > 0){
if(this.Files[0].readyState){
this.Files[0].onreadystatechange = function(){
if(ThisObj.Files[0].readyState == "loaded" || ThisObj.Files[0].readyState == "complete"){
ThisObj.Files.shift();
ThisObj.Load(callback);
}
}
}
else{
this.Files[0].onload = function(){
ThisObj.Files.shift();
ThisObj.Load(callback);
}
}
this.Header.appendChild(this.Files[0]);
}
else{ callback(); }
}
}
사용법
var Loader = new FileLoader();
Loader.AddScriptFile("../../Script/jquery/jquery.js");
Loader.AddScriptFile("../../Script/jquery/alerts/jquery.alerts.js");
Loader.AddCSSFile("../../Script/jquery/alerts/jquery.alerts.css");
Loader.Load(function(){
jAlert(g_strAlertOnBrowser, 'インフォメーション', function(){} );
});
this.Header = document.getElementsByTagName("head")[0];
this.Files = new Array();
this.AddScriptFile = function(src){
var scripts = document.getElementsByTagName("script");
var IsLoaded = false;
for(i=0;i<scripts.length;i++){
if(scripts[i].src.replace(/([\W\w]+\w+\.\w+)(\?[\w\W]+)?/, "$1") == src){
IsLoaded = true;
}
}
if(!IsLoaded){
var file = document.createElement("script");
file.type = "text/javascript";
//file.charset = "shift-jis";
file.src = src;
this.Files.push(file);
}
}
this.AddCSSFile = function(href){
var styles = document.getElementsByTagName("link");
var IsLoaded = false;
for(i=0;i<styles.length;i++){
if(styles[i].href.replace(/([\W\w]+\w+\.\w+)(\?[\w\W]+)?/, "$1") == href){
IsLoaded = true;
}
}
if(!IsLoaded){
var file = document.createElement("link");
file.type = "text/css";
file.rel = "stylesheet";
//file.charset = "shift-jis";
file.href = href;
this.Files.push(file);
}
}
this.Load = function(p_callback){
var ThisObj = this;
var callback = p_callback || function(){}
if(this.Files.length > 0){
if(this.Files[0].readyState){
this.Files[0].onreadystatechange = function(){
if(ThisObj.Files[0].readyState == "loaded" || ThisObj.Files[0].readyState == "complete"){
ThisObj.Files.shift();
ThisObj.Load(callback);
}
}
}
else{
this.Files[0].onload = function(){
ThisObj.Files.shift();
ThisObj.Load(callback);
}
}
this.Header.appendChild(this.Files[0]);
}
else{ callback(); }
}
}
사용법
var Loader = new FileLoader();
Loader.AddScriptFile("../../Script/jquery/jquery.js");
Loader.AddScriptFile("../../Script/jquery/alerts/jquery.alerts.js");
Loader.AddCSSFile("../../Script/jquery/alerts/jquery.alerts.css");
Loader.Load(function(){
jAlert(g_strAlertOnBrowser, 'インフォメーション', function(){} );
});
파일을 순차적으로 읽어오는 로더라고 하면 될까
페이지 로딩하면서 스크립트 파일을 하나씩 읽어내는 함수
파일 하나가 로딩완료되면 다음파일로...
스크립트 파일이랑 스타일시트 둘 다 가능하게 ㅎㅎ