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(){} );
});
파일을 순차적으로 읽어오는 로더라고 하면 될까
페이지 로딩하면서 스크립트 파일을 하나씩 읽어내는 함수
파일 하나가 로딩완료되면 다음파일로...
스크립트 파일이랑 스타일시트 둘 다 가능하게 ㅎㅎ
'프로그램 > html' 카테고리의 다른 글
내가 만든 구질구질한 넘버패드 스크립트 (0) | 2010.12.14 |
---|---|
객체 절대 좌표 구하기 (0) | 2010.12.14 |
drag&drop스크립트 이벤트에 필요한 from,to (0) | 2010.12.14 |
css로 선택자 반복 (0) | 2010.12.14 |
media player classid (0) | 2010.12.14 |