2

我正在测试我写这个的javascript

document.write("\n\n\n\n"+screen.colorDepth);
switch(screen.colorDepth)
{
case 24: document.bgColor = "skyblue" ;
         break;
case 32: document.bgColor = "yellow";
        break;
default: document.bgColor = "white";
        break;
}

但不幸的是,Firefox 21.0 和 IE9 显示的值为 24,因此背景颜色变为天蓝色,Opera(v12.01 Build 1532)和 chrome(版本 27.0.1453.94 m)显示为 32,因此背景变为黄色。我正在使用 win 7 Ultimate 32 位,我的屏幕原始颜色深度是 32 位。谁能解释为什么会这样?

4

1 回答 1

4

我猜他们正在使用不同的方法来解释颜色精度。32 位屏幕实际上只有 24 位颜色(最后 8 位不是颜色空间的一部分)。

Mozilla 将其定义为:

返回屏幕的颜色深度。

Chrome 似乎直接从系统中读取它,而 FF 和 IE9 似乎正确(基于该定义)识别屏幕的颜色精度(颜色深度)。

请注意,这screen.colorDepth不是任何标准的一部分,它的实际工作方式取决于实施者。

因此,在颜色深度方面检查颜色精度的更正确方法是:

case 16: document.bgColor = "..." ;
         break;
case 24:
case 32: document.bgColor = "..."; //32 = 24 bit color depth + 8 bits alpha
         break;
于 2013-06-05T02:44:16.403 回答