10/03/2009Il y a une méthode assez simple pour accélérer les traitements qui se font selon le navigateur : plutôt que de tester dans une fonction si on est sur Firefox, IE, Opera, on peut définir cette fonction directement selon le navigateur.
Voici un exemple d'une fonction gérant l'opacité d'un objet :
function setOpacite(obj, valeur)
{
if (!obj) return;
if (ie)
obj.style.filter="alpha(opacity="+valeur.toString()+")";
else if (ffox)
obj.style.setProperty("-moz-opacity", (valeur-10)/100, "");
else if (opera)
obj.style.opacity=valeur/100;
else
obj.style.filter="opacity="+ (valeur/100).toString()+")";
}
Cette fonction pourra être optimisée en ceci :
function setOpacite(obj, valeur)
{
if (ie)
setOpacite=function(obj,valeur)
{
if (obj)
obj.style.filter="alpha(opacity="+valeur.toString()+")";
};
else if (ffox)
setOpacite=function(obj,valeur)
{
if (obj)
obj.style.setProperty("-moz-opacity", (valeur-10)/100, "");
};
else if (opera)
setOpacite=function(obj,valeur)
{
if (obj)
obj.style.opacity=valeur/100;
};
else
setOpacite=function(obj,valeur)
{
if (obj)
obj.style.filter="opacity="+ (valeur/100).toString()+")";
};
setOpacite(obj, valeur);
}
Chaque condition redéfinit l'appel à la fonction lors du premier appel. Il est possible de faire aussi nomFonction=nomFonctionIE (comme le fait Andreas IPP
sur son site) mais c'est légèrement plus long.
Dernière modification le 10/01/2019 - Quillevere.net