1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
(function(spaceName){
/*------------------------priver-----------------------*/
//element servant a créer les élément html, via innerHTML
var element = document.createElement('div'),
isIE = /msie/i.test(navigator.userAgent),
parent;//parent référencant tout les élément créer depuis une cahine de caractere
//vide le contenue de element
function iniElement(){
element.innerHTML = '';
}
//céer des élements depuis une string
function create(str){
iniElement();
var wrap = /^<(thead|tbody|tfoot|colg|cap)/i.test(str) ? [ 1, "<table>", "</table>" ]
: /^<tr/i.test(str) ? [ 2, "<table><tbody>", "</tbody></table>" ]
: /^(<td|<th)/i.test(str) ? [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ]
: /^<opt/i.test(str) ? [ 1, "<select multiple='multiple'>", "</select>" ]
: /^<leg/i.test(str) ? [ 1, "<fieldset>", "</fieldset>" ]
: /^<col/i.test(str) ? [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] : null;
parent = element;
if(wrap){
parent.innerHTML = wrap[1] + str + wrap[2];
//on définit ele, le dernier parent
while (wrap[0]--)
parent = parent.lastChild;
}else
//sinon on remplit dans la reférence de element de la chaine html
parent.innerHTML = str;
}
//inser un élement a partir d'une sible et d'une position(before)
function insert(el, sible, before){
if(before){
sible.parentNode.insertBefore(el, sible);
}else sible.appendChild(el);
}
//insertion des élement via une string
function insertHTML(el, str, before){
create(str);
var elem;
while (parent.childNodes[0]){
elem = parent.removeChild(parent.childNodes[0]);
insert(elem, el, before);
}
}
//insertion des élement via un tableau
function insertArray(el, array, before){
for(var i = 0, l = array.length; i < l; i++)
getFuncInsertion(array[i])(el, array[i], before);
}
//insertion des élement via une JSON
function insertJSON(el, object, before){
var tag = object.tag,
items = object.items;
delete object.tag;
delete object.items;
var _el = document.createElement(tag);
for(var i in object)
spaceName.setAttribute(_el, i, object[i]);
if(items)
getFuncInsertion(items)(_el, items);
object.tag = tag;
object.items = items;
insert(_el, el, before);
}
//insertion des élement via noeud HTML, ou une collection HTML(nodeList)
function insertNod(el, els, before){
els = els.length ? els : [els];
for(var i = 0, l = els.length; i < l; i++)
insert(els[i], el, before);
}
function getFuncInsertion(els){
return typeof els == 'string' ? insertHTML : els.constructor == Object ? insertJSON : els instanceof Array ? insertArray : insertNod;
}
//création d'un objet d'acces rapide au propriété accéssible uniquement comme propriété du noeud
var camelGroupe = ['colSpan', 'rowSpan', 'vAlign', 'dateTime', 'accessKey', 'tabIndex', 'encType', 'maxLength', 'readOnly', 'longDesc', 'cellPadding', 'cellSpacing', 'frameBorder', 'useMap', 'id'];
for (var i = 0, c, isCamel = {'class' : 'className', 'className' : 'className', id : 'id'}; c = camelGroupe[i]; i++)
isCamel[c.toLowerCase()] = c;
//création d'un objet d'acces rapide au propriété accéssible uniquement comme propriété du noeud, et dont dont les valeur de typoe bool doivent avoir une notation XHTML
var boolGroupe = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
for (var i = 0, c, isBool = {}; c = boolGroupe[i]; i++)
isBool[c] = c;
/*------------------------publique-----------------------*/
//par forcement nécessaire, mais pour etre en 'harmonie' avec toute les autres fonctions
spaceName.getHTML = function(el){
return el.innerHTML;
}
spaceName.getOutherHTML = function(el){
iniElement();
element.appendChild(el.cloneNode(true));
return element.innerHTML;
}
spaceName.getAttribute = function(el, attr){
if(attr == 'style')
return el.style.cssText;
var camel, bool;
return r = isIE || (camel = isCamel[attr]) || (bool = isBool[attr]) ? el[camel || bool || attr] : el.getAttribute(attr);
}
spaceName.setAttribute = function(el, attr, value){
if(attr == 'style'){
el.style.cssText = value;
return;
}
var camel = isCamel[attr],
bool = isBool[attr];
if(bool && !value){
el[bool] = null;
}else if(isIE || camel || bool){
el[camel || bool || attr] = bool || value;
}else el.setAttribute(attr, value);
}
spaceName.removeAttribute = function(el, attr){
if(attr == 'style'){
el.style.cssText = '';
return;
}
var camel = isCamel[attr],
bool = isBool[attr];
if(isIE || camel || bool){
el[camel || bool || attr] = null;
}else el.removeAttribute(attr);
}
spaceName.setHTML = function(el, els){
el.innerHTML = '';
(typeof els == 'string' ? insertHTML : insertNod)(el, els);
}
spaceName.append = spaceName.insertIntoLast = function(el, els){
getFuncInsertion(els)(el, els);
}
spaceName.prepend = spaceName.insertBefore = function(el, els){
getFuncInsertion(els)(el, els, true);
}
spaceName.insertIntoFirst = function(el, els){
var ele;
getFuncInsertion(els)((ele = el.childNodes[0]) ? ele : el, els, !!ele);
}
spaceName.insertAfter = function(el, els){
var ele;
getFuncInsertion(els)((ele = el.nextSibling) ? ele : el.parentNode, els, !!ele);
}
spaceName.createElement = function(els){
create(els);
var els = Array.prototype.slice.call(parent.childNodes);
return els.length - 1 ? els : els[0];
}
})(window)//->remplacer windows par votre espace de nom |
Partager