refactored

This commit is contained in:
coderaiser 2013-01-21 09:53:00 -05:00
parent 0fa6fea33a
commit 8b14ded04e
2 changed files with 54 additions and 29 deletions

View file

@ -102,6 +102,26 @@ var CloudCommander, Util,
return lRet;
};
/**
* safe remove event listener
* @param pType
* @param pListener
* @param pUseCapture
* @param pElement {document by default}
*/
DOM.removeListener = function(pType, pListener, pUseCapture, pElement){
var lRet = this;
(pElement || window).removeEventListener(
pType,
pListener,
pUseCapture || false
);
return lRet;
};
/**
* safe add event keydown listener
* @param pListener
@ -417,8 +437,9 @@ var CloudCommander, Util,
lFunc = pParams_o.func,
lOnError,
lAsync = pParams_o.async,
lParent = pParams_o.parent,
lParent = pParams_o.parent || document.body,
lInner = pParams_o.inner,
lStyle = pParams_o.style,
lNotAppend = pParams_o.not_append;
if ( Util.isObject(lFunc) ){
@ -429,10 +450,10 @@ var CloudCommander, Util,
if(!lID && lSrc)
lID = DOM.getIdBySrc(lSrc);
var element = DOM.getById(lID);
var lElement = DOM.getById(lID);
/* если скрипт еще не загружен */
if(!element){
if(!lElement){
if(!lName && lSrc){
var lDot = lSrc.lastIndexOf('.'),
@ -449,23 +470,23 @@ var CloudCommander, Util,
return {code: -1, text: 'name can not be empty'};
}
}
element = document.createElement(lName);
lElement = document.createElement(lName);
if(lID)
element.id = lID;
lElement.id = lID;
if(lClass)
element.className = lClass;
lElement.className = lClass;
/* if working with external css
* using href in any other case
* using src
*/
if(lName === 'link'){
element.href = lSrc;
element.rel = 'stylesheet';
lElement.href = lSrc;
lElement.rel = 'stylesheet';
}else
element.src = lSrc;
lElement.src = lSrc;
/*
* if passed arguments function
@ -474,16 +495,13 @@ var CloudCommander, Util,
* if object - then onload and onerror
*/
if( Util.isFunction(lFunc) )
element.onload = lFunc;
/* if element (js/css) will not loaded
* it would be removed from DOM tree
* and error image would be shown
*/
element.onerror = (function(){
(pParams_o.parent || document.body)
.removeChild(element);
var lLoad = function(pEvent){
DOM.removeListener('load', lLoad, false, lElement);
Util.exec(lFunc, pEvent);
},
lError = function(){
lParent.removeChild(lElement);
DOM.Images.showError({
responseText: 'file ' +
@ -493,21 +511,22 @@ var CloudCommander, Util,
});
Util.exec(lOnError);
});
};
if(pParams_o.style){
element.style.cssText = pParams_o.style;
}
DOM.addListener('load', lLoad, false, lElement);
DOM.addListener('error', lError, false, lElement);
if(lStyle)
lElement.style.cssText = lStyle;
if(lAsync || lAsync === undefined)
element.async = true;
lElement.async = true;
if(!lNotAppend)
(lParent || document.body).appendChild(element);
lParent.appendChild(lElement);
if(lInner){
element.innerHTML = lInner;
}
if(lInner)
lElement.innerHTML = lInner;
}
/* если js-файл уже загружен
* запускаем функцию onload
@ -515,7 +534,7 @@ var CloudCommander, Util,
else
Util.exec(lFunc);
return element;
return lElement;
},
/**

View file

@ -58,6 +58,12 @@ var Util, DOM, $;
return lRet;
};
if(document.removeEventListener){
DOM.removeListener = function(pType, pListener, pCapture, pElement){
$(pElement || window).unbind(pType, pListener);
};
}
if(!document.getElementsByClassName){
DOM.getByClass = function(pClass, pElement){
var lClass = '.' + pClass,