Accueil > > > POSITION, OFFSETLEFT, CLIENTLEFT CROSSBROWSER
POSITION, OFFSETLEFT, CLIENTLEFT CROSSBROWSER
Information sur la source
Description
ce script permet de récupérer précisément la position d un élément dans le document... 3 fonction disponible : getOffset(element, from) -> récupere la position a partir du document getPosition(element, from) -> récupere la position a partir du dernier élément non static( la position relative n'est pas pris en charge bcp tros de beug, sur ie surtout) getSize (element, from) -> retourne la taille de l'élément l'argument from peux prendre 4 valeurs: margin ou border, ou padding, ou content, et définit ou la mesure doit commencer getOffset et getPosition commene leur mesure par default à border, getSize à content si l'élément n'est pas visible , alors, les méthodes forceront sont affichage pour récupérer les données. getOffset et getPosition, renvoient les valeurs sans les scroll n'utiliser pas de tableau en position absolue, et préciser les bordure avec l'attribut style et non border voilà si y a des bug , faite moi le savoir a++
Source
-
- (function(){//on encapusle nos donné grace a une fonction anonyme , pour eviter tros de vriables globale ou de faire un namespace
-
- /*------------------------------------fonction privée-------------------------------------------------*/
-
- //definit les versions du navigateur, peux etre mit en globale
- var ua=navigator.userAgent.toLowerCase(),
- isIE=/msie/.test(ua),
- isIE6=/msie 6/.test(ua),
- isIE7=/msie 7/.test(ua),
- isIE8=/msie 8/.test(ua),
- isWebKit = /webkit/.test(ua),
- isGecko = /gecko/.test(ua) && !isWebKit,
- isOpera = /presto/.test(ua);
-
-
- var getStyle = function(/*DOMObject*/element, /*string*/rule){//peux etre definit en globale car très utilise, aucune dépendance...
- var camelRule=rule.replace(/\-(\w)/g, function (strMatch, p1){return p1.toUpperCase();}),//supprime les tiré et met en majuscule la lettre suivante
- value = element.style[camelRule];
-
- if (!value){
- if(document.defaultView && document.defaultView.getComputedStyle){
- value = document.defaultView.getComputedStyle(element, "").getPropertyValue(/*fait l inverse de camelRule*/rule.replace(/[A-Z]/g, function(match){return '-'+match.charAt(0).toLowerCase();}));
- }else{//specifique ie
- value = element.currentStyle[camelRule] ;
- }
- }
-
- return value == 'auto' ? undefined : value;
- };
-
- var toNum = function(el,rule){// convertie une valeur avec des px
- return parseInt(getStyle(el,rule) ,10) || 0;
- };
-
- var manageBox = function(element, of, op, dim, co){//ajoute ou enleve les élement du modele de boite (bordure padding margin)
- for(var i=0,a;(a=op[i]);i++){
- of[0]+=toNum(element,a+'-left'+(a=='border'?'-width':''))*co;
- of[1]+=toNum(element,a+'-top'+(a=='border'?'-width':''))*co;
- if(dim){
- of[0]+=toNum(element,a+'-right'+(a=='border'?'-width':''))*co;
- of[1]+=toNum(element,a+'-bottom'+(a=='border'?'-width':''))*co;
- }
- }
- };
-
- var displayParent = function(el){//recuepre les parents pas affiché et affiche les, en position absolue (-> plus tard ) et invisible
- var p=[];
- while((el=el.parentNode) && el!=document.documentElement){
- var d=getStyle(el,'display');
- if(d=='none')
- p.push(el);
- }
- if(p.length){
- for(var i=0,el;(el=p[i]);i++){
- el.style.display='';
- }
- var last=p[p.length-1];
- last.__visibility__=getStyle(last,'visibility');
- last.style.visibility='hidden';//on devrait passer en absolue le dernier parrent avec un display none, mais bcp de travaille ... faut modifier les valeurs pour correspondre à la position d'orgine , vue que le taux de rafraichissement (~= 20 millisec) est plus élévé que le temp d'execution de la fonction, on peux faire sans
- /* last.__position__=getStyle(last,'position');
- last.style.position='absolute';*/
- }
- return p;
- };
-
- var unDisplayParent = function(p,of,abs){//retablie l'affichage des parents
- if(p.length){
- var l=p[p.length-1];
- /*if(of && l.__position__=='static'){
- if(abs && (!isIE8 && !isOpera)){
- of[0] -= toNum(l,'border-left-width');
- of[1] -= toNum(l,'border-top-width');
- }
- if(abs){
- of[0] -= l.offsetLeft || 0;
- of[1] -= l.offsetTop || 0;
- }
- }
- l.style.position=l.__position__;
- l.__position__=null;*/
- l.style.visibility=l.__visibility__;
- l.__visibility__=null;
- for(var i=0,el;(el=p[i]);i++){
- el.style.display='none';
- }
- }
- };
-
- var getOffset = function(/*DOMObject*/element, /*bool*/byPos, /*string*/from){
-
- var of=[0,0],//tab de coordonnées à retourner
- from = from || 'border',//par default offset de la bordure (sasns les marges) , car la définition des position se fait a partir des bordures
- el=element,//réferene a element pour boucler dessus
- manageWith,//variable pour ajouter des elements du modele de boite
- manageLess,//variable pour enlever des elements du modele de boite
- abs,//si l'element est en absolue (utile seulement pour ie6 et 7 geko et webkit, mais déclarer pour tous pourr éviter tros e test conditionnelle)
- dp=displayParent(element);//affiche les parents si néccessaire
-
- //definit abs
- if(!isIE8 || !isOpera)
- abs=_abs=getStyle(element,'position')!='static'?element:false;
-
-
- //ajoute au tab de coor les offsetparent, + break la boucle si un parent opu l'element en position absolue et byPos définit
- while (el){
- of[0] += el.offsetLeft || 0;
- of[1] += el.offsetTop || 0;
- el = el.offsetParent;
- if(el && byPos && ((getStyle(el,'position')!='static' && (!el.__position__ || el.__position__!='static')) || abs)){
- //ie8 et opera beug
- if(isIE8 || isOpera){
- of[0] -= toNum(el,'border-left-width');
- of[1] -= toNum(el,'border-top-width');
- }
- break;
- }
- };
-
- if(!isIE8 && !isOpera){
- //si l'element est en absolue et que byPos définit, pas besoin de réctifier les valeurs
- if(!byPos || !abs){
- var _el=el || document.documentElement,//dernir element parent définit
- el=element.parentNode;//on commence au 1er parent
-
- //beug ie , concerne les prop width, height,et overflow
- if(isIE)
- var h=false;
-
- do{
- if(el.tagName=='TR' || el.tagName=='TBODY')//pas de beug sur ses éléments
- continue;
-
- if(el.tagName=='TD' || (isWebKit && el.tagName=='TABLE')){
- //retranche les bordure si pas en absolue avant
- if(!abs ){
- of[0] += toNum(el,'border-left-width');
- of[1] += toNum(el,'border-top-width');
- }
- h=false;
- continue;
- }
-
- if(!byPos && getStyle(el,'position')!='static'){//si l'élément est pas en static, et que l'oin cherche l'offset depuis le body, en ajoute les bordure (beug)
- of[0] += toNum(el,'border-left-width');
- of[1] += toNum(el,'border-top-width');
- abs=el;
- }
-
- // ajoute les scroll si pas ie6 qui le fait déja ,
- if(!isIE6 && el!=document.body){
- of[0] = of[0]-el.scrollLeft || 0;
- of[1] = of[1]-el.scrollTop || 0;
- }
-
- if(isIE){
- //si beug de style ie
- if(!abs && (getStyle(el,'height') || getStyle(el,'width') || (isIE7 && getStyle(el,'overflow')!='visible') )){
- h=el;
- }
- // si beug de style et pas en absolue ajoute les bordure
- if(!abs && h==el){
- of[0] += toNum(el,'border-left-width');
- of[1] += toNum(el,'border-top-width');
- }
- }
-
- }while((el=el.parentNode) && el!=_el);
- }
- }
-
- //réctifie les valeurs si le dernier parent visible est body
- if(!el || el==document.documentElement){
- if((!isIE8 && !isOpera) && (!abs || isWebKit || isGecko)){
- of[0] += toNum(document.body,'border-left-width')*(isGecko && !abs?2:1);
- of[1] += toNum(document.body,'border-top-width')*(isGecko && !abs?2:1);
- }
- }
-
- //définit les tableau des prop du modele de boite a enlever ou ajouter
- switch(from){
- case 'content':
- manageWith=['padding','border'];
- break;
- case 'padding':
- manageWith=['border'];
- break;
- case 'margin':
- manageLess=['margin'];
- break;
- }
-
- //enleve ou ajoute les prop du modele de boite
- if(manageWith)
- manageBox(element, of, manageWith, false, 1);
- if(manageLess)
- manageBox(element, of, manageLess, false, -1);
-
- //rétatblie le display des parent
- unDisplayParent(dp,of,_abs );
-
- return of;
- };
-
- /*------------------------------------fonction publique-------------------------------------------------*/
-
- window.getOffset=function(/*DOMObject*/element, /*string*/from){
- return getOffset(element,false,from);
- };
-
- window.getPosition=function(/*DOMObject*/element, /*string*/from){
- return getOffset(element,true,from);
- };
-
- window.absolutize = function(/*DOMObject*/element){
- //si pas deja en absolue
- if (getStyle(element,'position') == 'absolute')
- return;
-
- var es=element.style,//racourcit
- dp=displayParent(element);//affiche les parents si néccessaire
-
-
- var of=getPosition(element,'margin'),//position de l'élément
- dim=getSize(element);//dimension de l'élément
-
- //rétatblie le display des parent
- unDisplayParent(dp,of,true);
-
- es.position = 'absolute';
- es.left = of[0] + 'px';
- es.top = of[1] + 'px';
- es.width =dim[0] + 'px';
- es.height = dim[1] + 'px';
-
- };
-
- window.getSize = function(/*DOMObject*/element, /*string*/from){
- var dim=[0,0],//tableau de coor à retourné
- from = from || 'content',//par default taille du contenue (sasn les padding) , car la définition des taille se fait a partir de là
- manageWith,//variable pour ajouter des elements du modele de boite
- manageLess,//variable pour enlever des elements du modele de boite
- op=from=='content' || from=='padding'?'client':'offset',//operation pour récupérer les dimension, utilise la meilleur fonction native
- dp=displayParent(element);//affiche les parents si néccessaire
-
- dim[0] += element[op+'Width'];
- dim[1] += element[op+'Height'];
-
- //définit le tableau des prop du modele de boite a enlever ou ajouter
- switch(from){
- case 'margin':
- manageLess=['margin'];
- break;
- case 'content':
- manageWith=['padding'];
- break;
- }
-
- //enleve ou ajoute les prop du modele de boite
- if(manageWith || manageLess)
- manageBox(element, dim, manageWith || manageLess, true,manageLess?1:-1);
-
- //rétatblie le display des parent
- unDisplayParent(dp);
-
- return dim;
- };
-
- })()
(function(){//on encapusle nos donné grace a une fonction anonyme , pour eviter tros de vriables globale ou de faire un namespace
/*------------------------------------fonction privée-------------------------------------------------*/
//definit les versions du navigateur, peux etre mit en globale
var ua=navigator.userAgent.toLowerCase(),
isIE=/msie/.test(ua),
isIE6=/msie 6/.test(ua),
isIE7=/msie 7/.test(ua),
isIE8=/msie 8/.test(ua),
isWebKit = /webkit/.test(ua),
isGecko = /gecko/.test(ua) && !isWebKit,
isOpera = /presto/.test(ua);
var getStyle = function(/*DOMObject*/element, /*string*/rule){//peux etre definit en globale car très utilise, aucune dépendance...
var camelRule=rule.replace(/\-(\w)/g, function (strMatch, p1){return p1.toUpperCase();}),//supprime les tiré et met en majuscule la lettre suivante
value = element.style[camelRule];
if (!value){
if(document.defaultView && document.defaultView.getComputedStyle){
value = document.defaultView.getComputedStyle(element, "").getPropertyValue(/*fait l inverse de camelRule*/rule.replace(/[A-Z]/g, function(match){return '-'+match.charAt(0).toLowerCase();}));
}else{//specifique ie
value = element.currentStyle[camelRule] ;
}
}
return value == 'auto' ? undefined : value;
};
var toNum = function(el,rule){// convertie une valeur avec des px
return parseInt(getStyle(el,rule) ,10) || 0;
};
var manageBox = function(element, of, op, dim, co){//ajoute ou enleve les élement du modele de boite (bordure padding margin)
for(var i=0,a;(a=op[i]);i++){
of[0]+=toNum(element,a+'-left'+(a=='border'?'-width':''))*co;
of[1]+=toNum(element,a+'-top'+(a=='border'?'-width':''))*co;
if(dim){
of[0]+=toNum(element,a+'-right'+(a=='border'?'-width':''))*co;
of[1]+=toNum(element,a+'-bottom'+(a=='border'?'-width':''))*co;
}
}
};
var displayParent = function(el){//recuepre les parents pas affiché et affiche les, en position absolue (-> plus tard ) et invisible
var p=[];
while((el=el.parentNode) && el!=document.documentElement){
var d=getStyle(el,'display');
if(d=='none')
p.push(el);
}
if(p.length){
for(var i=0,el;(el=p[i]);i++){
el.style.display='';
}
var last=p[p.length-1];
last.__visibility__=getStyle(last,'visibility');
last.style.visibility='hidden';//on devrait passer en absolue le dernier parrent avec un display none, mais bcp de travaille ... faut modifier les valeurs pour correspondre à la position d'orgine , vue que le taux de rafraichissement (~= 20 millisec) est plus élévé que le temp d'execution de la fonction, on peux faire sans
/* last.__position__=getStyle(last,'position');
last.style.position='absolute';*/
}
return p;
};
var unDisplayParent = function(p,of,abs){//retablie l'affichage des parents
if(p.length){
var l=p[p.length-1];
/*if(of && l.__position__=='static'){
if(abs && (!isIE8 && !isOpera)){
of[0] -= toNum(l,'border-left-width');
of[1] -= toNum(l,'border-top-width');
}
if(abs){
of[0] -= l.offsetLeft || 0;
of[1] -= l.offsetTop || 0;
}
}
l.style.position=l.__position__;
l.__position__=null;*/
l.style.visibility=l.__visibility__;
l.__visibility__=null;
for(var i=0,el;(el=p[i]);i++){
el.style.display='none';
}
}
};
var getOffset = function(/*DOMObject*/element, /*bool*/byPos, /*string*/from){
var of=[0,0],//tab de coordonnées à retourner
from = from || 'border',//par default offset de la bordure (sasns les marges) , car la définition des position se fait a partir des bordures
el=element,//réferene a element pour boucler dessus
manageWith,//variable pour ajouter des elements du modele de boite
manageLess,//variable pour enlever des elements du modele de boite
abs,//si l'element est en absolue (utile seulement pour ie6 et 7 geko et webkit, mais déclarer pour tous pourr éviter tros e test conditionnelle)
dp=displayParent(element);//affiche les parents si néccessaire
//definit abs
if(!isIE8 || !isOpera)
abs=_abs=getStyle(element,'position')!='static'?element:false;
//ajoute au tab de coor les offsetparent, + break la boucle si un parent opu l'element en position absolue et byPos définit
while (el){
of[0] += el.offsetLeft || 0;
of[1] += el.offsetTop || 0;
el = el.offsetParent;
if(el && byPos && ((getStyle(el,'position')!='static' && (!el.__position__ || el.__position__!='static')) || abs)){
//ie8 et opera beug
if(isIE8 || isOpera){
of[0] -= toNum(el,'border-left-width');
of[1] -= toNum(el,'border-top-width');
}
break;
}
};
if(!isIE8 && !isOpera){
//si l'element est en absolue et que byPos définit, pas besoin de réctifier les valeurs
if(!byPos || !abs){
var _el=el || document.documentElement,//dernir element parent définit
el=element.parentNode;//on commence au 1er parent
//beug ie , concerne les prop width, height,et overflow
if(isIE)
var h=false;
do{
if(el.tagName=='TR' || el.tagName=='TBODY')//pas de beug sur ses éléments
continue;
if(el.tagName=='TD' || (isWebKit && el.tagName=='TABLE')){
//retranche les bordure si pas en absolue avant
if(!abs ){
of[0] += toNum(el,'border-left-width');
of[1] += toNum(el,'border-top-width');
}
h=false;
continue;
}
if(!byPos && getStyle(el,'position')!='static'){//si l'élément est pas en static, et que l'oin cherche l'offset depuis le body, en ajoute les bordure (beug)
of[0] += toNum(el,'border-left-width');
of[1] += toNum(el,'border-top-width');
abs=el;
}
// ajoute les scroll si pas ie6 qui le fait déja ,
if(!isIE6 && el!=document.body){
of[0] = of[0]-el.scrollLeft || 0;
of[1] = of[1]-el.scrollTop || 0;
}
if(isIE){
//si beug de style ie
if(!abs && (getStyle(el,'height') || getStyle(el,'width') || (isIE7 && getStyle(el,'overflow')!='visible') )){
h=el;
}
// si beug de style et pas en absolue ajoute les bordure
if(!abs && h==el){
of[0] += toNum(el,'border-left-width');
of[1] += toNum(el,'border-top-width');
}
}
}while((el=el.parentNode) && el!=_el);
}
}
//réctifie les valeurs si le dernier parent visible est body
if(!el || el==document.documentElement){
if((!isIE8 && !isOpera) && (!abs || isWebKit || isGecko)){
of[0] += toNum(document.body,'border-left-width')*(isGecko && !abs?2:1);
of[1] += toNum(document.body,'border-top-width')*(isGecko && !abs?2:1);
}
}
//définit les tableau des prop du modele de boite a enlever ou ajouter
switch(from){
case 'content':
manageWith=['padding','border'];
break;
case 'padding':
manageWith=['border'];
break;
case 'margin':
manageLess=['margin'];
break;
}
//enleve ou ajoute les prop du modele de boite
if(manageWith)
manageBox(element, of, manageWith, false, 1);
if(manageLess)
manageBox(element, of, manageLess, false, -1);
//rétatblie le display des parent
unDisplayParent(dp,of,_abs );
return of;
};
/*------------------------------------fonction publique-------------------------------------------------*/
window.getOffset=function(/*DOMObject*/element, /*string*/from){
return getOffset(element,false,from);
};
window.getPosition=function(/*DOMObject*/element, /*string*/from){
return getOffset(element,true,from);
};
window.absolutize = function(/*DOMObject*/element){
//si pas deja en absolue
if (getStyle(element,'position') == 'absolute')
return;
var es=element.style,//racourcit
dp=displayParent(element);//affiche les parents si néccessaire
var of=getPosition(element,'margin'),//position de l'élément
dim=getSize(element);//dimension de l'élément
//rétatblie le display des parent
unDisplayParent(dp,of,true);
es.position = 'absolute';
es.left = of[0] + 'px';
es.top = of[1] + 'px';
es.width =dim[0] + 'px';
es.height = dim[1] + 'px';
};
window.getSize = function(/*DOMObject*/element, /*string*/from){
var dim=[0,0],//tableau de coor à retourné
from = from || 'content',//par default taille du contenue (sasn les padding) , car la définition des taille se fait a partir de là
manageWith,//variable pour ajouter des elements du modele de boite
manageLess,//variable pour enlever des elements du modele de boite
op=from=='content' || from=='padding'?'client':'offset',//operation pour récupérer les dimension, utilise la meilleur fonction native
dp=displayParent(element);//affiche les parents si néccessaire
dim[0] += element[op+'Width'];
dim[1] += element[op+'Height'];
//définit le tableau des prop du modele de boite a enlever ou ajouter
switch(from){
case 'margin':
manageLess=['margin'];
break;
case 'content':
manageWith=['padding'];
break;
}
//enleve ou ajoute les prop du modele de boite
if(manageWith || manageLess)
manageBox(element, dim, manageWith || manageLess, true,manageLess?1:-1);
//rétatblie le display des parent
unDisplayParent(dp);
return dim;
};
})()
Historique
- 23 mai 2009 21:36:56 :
- modification du titre + faute d'orthographe
- 24 mai 2009 03:33:52 :
- ajout d'une nouvelle méthode, demain je finit !! ça lague sous safarie ...
- 24 mai 2009 16:30:55 :
- ajout de force, plus getSize
- 02 juin 2009 18:58:48 :
- ...
- 02 juin 2009 19:56:59 :
- ....
Sources du même auteur
Sources de la même categorie
PETIT LOGICIEL DE DESSIN, RETOUCHE AVEC CANVASPETIT LOGICIEL DE DESSIN, RETOUCHE AVEC CANVASpour cette source j'ai exploiter la balise canvas afin de crée un petit logiciel de dessin je dit petit car il lui manque pas mal de choses le désigne...
par kazma
CALCULATRICE HEURECALCULATRICE HEUREc'est un script en javascript pour afficher l'heure qui s'actualise chaque seconde
est aussi une simple calculatrice en utilisant des images
((pour...
par m22001111
DRAG & DROP VERS UN CANVASDRAG & DROP VERS UN CANVASla source comme son nom l'indique sert a faire du drag & drop d'image vers un canvas
marche avec ie9 firefox chrome safari ...
par kazma
ROTATION D'UNE IMAGE, ANIMATIONROTATION D'UNE IMAGE, ANIMATION Voici un tout petit code qui permet de faire tourner une image en animation.
Depuis quelques années, HTML5 a introduit l'élément "canvas" qui convi...
par william voirol
FRACTALES, FOUGÈRE, TRIANGLE, CARRÉFRACTALES, FOUGÈRE, TRIANGLE, CARRÉ En 1974 (environ), Benoît Mandelbrot a inventé (découvert ?) les objets fractals (ou fractales).
Ce sont ces objets qui présentent une 'même' structu...
par william voirol
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Changer un calque de position"absolute" en position"relative" dans OnClick [ par FoxCoon ]
Salut tout le monde !Je voudrais savoir comment je pourrais changer la position de mon calque...en fait, je cherche à créer un menu....Quand
bug sur zindex [ par originalcompo ]
Bonjour à tous.Voilà, j'ai un bug dans l'utilisation de la propriété zindex, dans le cas d'internet explorer (marche très bien sur netscape).Comme je
Position relative de calques... problèmeS [ par lunelautre ]
[u]Bonjour j'ai des calques de menu (invisibles quand non actifs) dont la position est relative ... en fonction de la taille de la fenêtre du navigate
problème de position d'une image lors du survol d'un lien [ par molio ]
Bonjour, J'essaie de faire un site internet pour mon laboratoire. je souhaite faire apparaitre une image qui suit la souris au survol d'un lien vers
Menu Défilant Vertical ...Problème de récupération de données [ par Romje1 ]
Bonjour, J'essaie de faire un menu défilant vertical au click gauche (le menu descends ) ou droite (le menu monte) sans aide de framework, avec un pa
Problême affichage menu sous chrome et firefox. [ par stef1010 ]
Bonjour, j'ai décidé de franchir le grand pas : créé mon site. J'ai récupéré un code sources de se site avec un menu qui réagis quand la souris se pos
Probleme actualisation .js [ par woutwout ]
Bonjour, j'essaye de coder une page html qui fait apparaitre une carte de google map, et j'aimerai grâce à un script .js pouvoir changer la position d
Prototype/Scriptaculous && Background-position [ par DakM ]
Bonjour ! J'ai ce calque: [code=js]var div = new Element('div', {'id': this._id, 'class': css.map.container, 'style': 'display:none; width: 100%; hei
Probleme d'affichage [ par Taker2004 ]
Salut je suis nouveau et j'ai des probleme d'affichage, je sais pas si je suis a la bonne place mais voici l'erreur que sa me donne quand je vérifie a
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|