Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/04/2011, 17h38   #1
Invité de passage
 
Inscription : avril 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 2
Points : 0
Points : 0
Par défaut Conversion des couleurs RGB => Hexa dans textarea

Bonjour,

J'ai codé un script permettant de convertir des balises html en bbcode, le code html à convertir a cette forme :

Code html :
<span style="color: rgb(102, 153, 153);" id="mess1">Je suis gentil</span><br><span style="color: rgb(153, 102, 153);" id="mess2">Non tu es méchant</span>

Il ne m'est pas possible d'intervenir sur le contenu de l'attribut style (de changer le rgb en hexa, car cette couleur est changée par l'utilisateur via une palette de couleur, dans la palette c'est bien en hexadécimal mais dès que l'utilisateur choisi la couleur le script affecte la couleur via document.getElementById(monid).style.color = "#333333' (par exemple) et le navigateur convertit directement cette couleur en rgb dans le code source)

Ce code là est donc traduis en bbcode, lorsque le script voit qu'il y a un style attaché avec une couleur la traduction donne :

Code html :
1
2
3
 
[color=rgb(102, 153, 153)]Je suis gentil[/color]
[color=rgb(153, 102, 153)]Non tu es méchant[/color]

La ligne javascript utilisée pour traduire ça est la suivante :

Code js :
text = text .replace(/<span style="color: ([\s\S]*?);">([\s\S]*?)<\/span>/gi, "[color=$1]$2[/color]");

Mon problème étant que cette conversion (html => bbcode) est faite pour pouvoir affiché le texte html sur un forum utilisant le bbcode, et les couleurs RGB ne sont pas reconnues sur ces forum, il faudrait donc convertir la couleur RGB en hexadécimal, chose que je n'arrive pas à faire, j'ai bien essayé de récupérer les différents nombre de la couleur et de les envoyer dans une fonction convertissant le RGB en hexadécimal, mais ça ne marche pas :

Code js :
1
2
3
4
5
6
7
8
9
10
11
12
13
function rgb2hex(r,g,b) {
	var hexVal = function(n) {
		var data = "0123456789ABCDEF";
		if (n==null) return "00";
		n=parseInt(n); 
		if (n==0 || isNaN(n)) return "00";
		n=Math.round(Math.min(Math.max(0,n),255));
		return data.charAt((n-n%16)/16) + data.charAt(n%16);
	}
	return hexVal(r)+hexVal(g)+hexVal(b);
}
 
text = text .replace(/<span style="color: rgb\(([\s\S]*?)\);">([\s\S]*?)<\/span>/gi, "[color=#]" + rgb2hex("$1","$2","$3") + "]$4[/color]");

Si quelqu'un a une solution c'est avec plaisir...
alias_is est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 19h15   #2
Invité de passage
 
Inscription : avril 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 2
Points : 0
Points : 0
J'ai finalement trouvé une solution,

Il suffit de récupérer à l'aide d'un match toutes les couleurs dans un tableau (on supprima les doublons), puis de traiter chaque occurrence du tableau, de mettre dans une variable son équivalent hexadécimal et de faire un replace de la valeur du tableau (rgb) par son équivalent hexadécimal
alias_is est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h41.


 
 
 
 
Partenaires

Hébergement Web