|
Obtener el backgroundColor de un objeto en todos los navegadores |
|
|
|
|
Origen: BR Consulting Dev Team
|
|
viernes, 16 de septiembre de 2005 |
Cuando llega el momento de obtener el valor #XXYYZZ del estilo de un elemento de nuestra página, notamos que Mozilla/Firefox devuelve rgb(decimal, decimal, decimal) en vez de #XXYYZZ como sí lo hace IE y Safari/Konqueror. Acá está la solución.
Es cuestión de copiar y pegar el código que está acá abajo en el .js o en el html dentro de la sección javascript, y se lo llama con con document.getElementById("miId").style.backgroundColor.colorToHex().
Código: // Necesario para la conversion de backgroundColor = rgb(x,y,z) que devuelve Mozilla. // Safari/IE devuelven directamente #XXYYZZ, que es lo que necesitamos, así que se ignora y // devuelve bien igual en todos los navegadores (funciona en todos). // Se lo llama con document.getElementById("miId").style.backgroundColor.colorToHex() // Tomado de: http://www.codingforums.com/archive/index.php/t-17337.html String.prototype.leadingZeroes = function( qty, totalPlaces ) { var s = this; if ( this.length + qty > totalPlaces ) return s; for ( var i=0; i s = "0" + s; return s; }; String.prototype.rgbToHex = function() { var colors = this.split(','); for (var rgb,i=0; (rgb=colors[i]); i++) colors[i] = parseInt(rgb).toString(16).toUpperCase().leadingZeroes(1,2); return "#" + colors.join(''); }; String.prototype.colorToHex = function() { if ( /rgb/.test( this ) ) return this.match(/\((.+)\)/)[1].rgbToHex(); if ( this.length <= 4 ) return this.replace( /#?([a-z0-9])([a-z0-9])([a-z0-9])/i, "#$1$1$2$2$3$3" ); return this.replace(/#?(.+)/, "#$1" ); }; |