Conveter código rgb do firefox para o hexa NORMAL de cores
Monday, April 26, 2010 6:59:29 PM
Ou seja a expressão:
alert(elemento.style.backgroundColor);
Deveria retornar algo como: "#FFCC00",
Mas o nosso amigo Firefox retorna algo como : "rgb(255, 204, 0)".
O mais engraçado é que se atribuir o valor hexadecimal via console do firebug, ele aceita normalmente, mas quando for retornar o valor que acabara de inserir, vai ser retornado o valor em rgb.
A solução para esse impasse é uma função que converte o valor de rgb em hexadecimal via manipulação de string mesmo, assim quando se for usar uma lógica que use cores de fundo ou cores de frente dentro do script, passe esta função e ele funcionará em todos os navegadores
function rgbConvert(str) { // parabens Firefox
str = str.replace(/rgb\(|\)/g, "").split(",");
str[0] = parseInt(str[0], 10).toString(16).toLowerCase();
str[1] = parseInt(str[1], 10).toString(16).toLowerCase();
str[2] = parseInt(str[2], 10).toString(16).toLowerCase();
str[0] = (str[0].length == 1) ? '0' + str[0] : str[0];
str[1] = (str[1].length == 1) ? '0' + str[1] : str[1];
str[2] = (str[2].length == 1) ? '0' + str[2] : str[2];
return ('#' + str.join(""));
}
para usa-lo é muito simples:
btn1Cor = btn1.style.backgroundColor; //pega a cor de fundo if(btn1Cor.substring(0,3)=="rgb") btn1Cor = rgbConvert(btn1Cor); //verifica se é em rgb, se for retorne a função na mesma variavel
Eu peguei essa função aqui.















