Per me non è un bug, semplicemente IE restituisce la proprietà backgroundColor nel formato #xxxxxx invece firefox nel formato rgb, e ovviamente confrontando la stringa rgb(x, x, x) con #xxxxxx il confronto ritorna false.
codice:
<html>
<head>
<script language="javascript">
function Dec2Hex (Dec) {
var hexChars = "0123456789ABCDEF";
var a = Dec % 16;
var b = (Dec - a)/16;
hex = "" + hexChars.charAt(b) + hexChars.charAt(a);
return hex;
}
function rgbToHex(rgb){
if (rgb.indexOf("#") == 0){
return rgb;
}
var str = rgb.replace(/rgb\(/,"").replace(/\)/,"");
var arr = str.split(", ");
var r = arr[0];
var g = arr[1];
var b = arr[2];
return "#" + Dec2Hex(r) + Dec2Hex(g) + Dec2Hex(b);
}
function swappa(obj){
var colore = document.getElementById(obj).style.backgroundColor;
if (rgbToHex(colore) == "#000000"){
document.getElementById(obj).style.backgroundColor = "#FFFFFF";
document.getElementById(obj).style.color = "#000000";
}
else{
document.getElementById(obj).style.backgroundColor = "#000000";
document.getElementById(obj).style.color = "#FFFFFF";
}
}
</script>
</head>
<body>
<div id="test" style="background-color:#000000;color:#FFFFFF">ECCO IL DIV</div>
<input type="button" value="xx" onclick="swappa('test')">
</body>
</html>
così funziona con entrambi i browser