Accès à la méthode setattribute('style','') sous ie6

Contenu du snippet

Bonjour,
Sous IE6, la méthode setAttribute('style','height:100%') n'est pas permise (merci Bill). Il faut donc passer par object.style.height = '100%'.

fatigué de ce problème de compatibilité j'ai crée cette mini (riquiqui?) fonction qui me permet de ne plus me préoccuper de la version du navigateur.

usage :
my_div_handler = getElementById('my_div');
setAttributeStyle( 'height:100%;font-weigth:bold;line-height:16px;text-color:red', my_div_handler);

Source / Exemple :


//////////////////////////////
// function setAttributeStyle( string style, object_handler object)
//
// auteur: Nicolas LE DREFF
// date: 13/03/2010
//
// cette fonction s'occupe d'appliquer à la volée un style contenu dans une chaine de caractère.
// Sous IE6, la méthode setAttribute('style','height:100%') n'est pas permise. Il faut passer par object.style.height = '100%'.
// usage : 
// my_div_handler = getElementById('my_div');
// setAttributeStyle( 'height:100%;font-weigth:bold;line-height:16px;text-color:red', my_div_handler);

function setAttributeStyle( style, object)
{
	object.setAttribute('style',style);      // d'abord on applique avec la méthode récente
        if(!object.attributes.getNamedItem('style').nodeValue)    // si malgré celà, la propriété style vaut 'null'
        {
		var style_reg = new RegExp("[;]+", "g");           // on recherche les ';'
		var tableau_attributes = style.split(style_reg);    // on explose le style avec l'expression régulière
		for (var i=0; i<tableau_attributes.length; i++) {    //on passe en revue les != éléments
                        // on retire les espace superflus
			tableau_attributes[i] = tableau_attributes[i].replace(/^\s+/g,'').replace(/\s+$/g,'');
			var attributes_reg = new RegExp("[:]+", "g");   // on recherche les ':'
			tableau_attribute_value = tableau_attributes[i].split(attributes_reg); // on explose 
			attribute_name = tableau_attribute_value[0];   // le premier élément est le nom de l'attribut
                        var attributes_name_reg = new RegExp("[-]+", "g");  // on recherche les '-'
                        tableau_attribute_name = attribute_name.split(attributes_name_reg);   // on explose

                        if(tableau_attribute_name.length > 1)   // si le tableau a plus d'1 élément, il y avait 1 '-'
                        {
                                // on passe en majuscule l'initiale du 2ème morceau
                                initiale_attribute_name = tableau_attribute_name[1].substr(0,1).toUpperCase();
                                // on remet tout dans la bonne boite
                                tableau_attribute_name[1] = initiale_attribute_name + tableau_attribute_name[1].substr(1,(tableau_attribute_name[1].length -1));
                                attribute_name = tableau_attribute_name.join('');  // on ré-assemble les deux morceaux
                        }
			attribute_value =  tableau_attribute_value[1];  // la valeur de l'attribut
			object.style[attribute_name] = attribute_value;   // application de l'attribut
		}
        }

}

Conclusion :


Voilà, rien de bien fantastique, mais c'est fonctionnel.

Enjoy...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.