function style( elem ) {
if ( elem.ownerDocument && elem.ownerDocument.defaultView ) {
return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
} else if ( elem.currentStyle ) {
return elem.currentStyle;
}
return elem.style;
}
function toRGB( color ) {
var result;
// rgb(num,num,num)
if ( result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec( color ) ) {
result = [ parseInt( result[ 1 ] ), parseInt( result[ 2 ] ), parseInt( result[ 3 ] ) ];
// rgb(num%,num%,num%)
} else if ( result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec( color ) ) {
result = [ parseFloat( result[ 1 ] ) * 2.55, parseFloat( result[ 2 ] ) * 2.55, parseFloat( result[ 3 ] ) * 2.55 ];
// #a0b1c2
} else if ( result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec( color ) ) {
result = [ parseInt( result[ 1 ], 16 ), parseInt( result[ 2 ], 16 ), parseInt( result[ 3 ], 16 ) ];
// #fff
} else if ( result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec( color ) ) {
result = [ parseInt( result[ 1 ] + result[ 1 ], 16 ), parseInt( result[ 2 ] + result[ 2 ], 16 ), parseInt( result[ 3 ] + result[ 3 ], 16 ) ];
} else { // ничего не совпало
// скорее всего цвет указан словесным названием типа: red, blue и т.д.
return color;
}
return "#" + result[ 0 ].toString( 16 ) + result[ 1 ].toString( 16 ) + result[ 2 ].toString( 16 );
}
var form =window.document.forms[0,
elements = form.elements;
for( var i = 0, len = elements.length; i < len; i++ ) {
alert( toRGB( style( elements[i] ).backgroundColor ) );
}