Javascript:检测单色显示

时间:2012-07-12 21:57:48

标签: javascript html5 android-browser monochrome

我一直在电子书阅读器上测试一个HTML5 webapp,我得到它主要是工作,但颜色都搞砸了(它是单色的)。我的应用程序使用大量颜色,每秒更新一次。我也需要在彩色显示器上运行,所以我需要检测它是否是单色的。

我正在使用的电子阅读器由索尼制作,它报告screen.pixelDepthscreen.colorDepth为16,这与我支持的大多数其他设备不同(24和32是常见的)。

到目前为止,我的想法是:

  • 始终向报告16位颜色的设备显示单色
  • 从用户代理/ navigator.appVersion
  • 嗅探
  • 来自画布的样本位(虽然我认为也可能是谎言)

假设16位颜色=单色是否安全?还是有另外一种我可以忽视的技巧会更可靠吗?

2 个答案:

答案 0 :(得分:2)

在计算中,“单色”通常是2位,16位显示通常称为灰度(尽管它可能是其他颜色的阴影)。

考虑使用调色板,其中颜色转换为适当的16位值而不是设备嗅探。你可以从web safe colour palette开始。

或者,如果用户认为看起来更好,则可以选择“使用灰度” - 您也可以找到其他用户选择该选项。如果您的颜色都是基于类的,您可以替换当前样式表或添加具有适当重新分配颜色的新样式表。

答案 1 :(得分:0)

我不熟悉如何检测灰度屏幕,但我希望一些色盲用户解决方案可能会给你帮助。

问题是你需要通过使用颜色传输信息,但屏幕(或色盲人的眼睛)从颜色中删除一些信息,这样用户就会感到困惑。解决方案是确保按颜色传输的信息不受屏幕或眼睛的影响,您也可以使用其他媒体而不是颜色。

  1. 色盲或灰度屏幕不会删除颜色中的所有信息。例如,如果颜色被描述为HSL(色调/饱和度/光),则灰度屏幕会移除色调和饱和度但保持亮度。如果您使用5种不同的颜色,只要它们具有5个不同的光值(例如0.1,0.3,0.5,0.7,0.9),用户在灰度屏幕中识别它们就不会有问题。

  2. 您还可以使用其他媒体传输按颜色传输的信息。例如,Adium for Mac使用形状和颜色来指示联系状态。在线用户为绿色矩形,距离为黄色三角形,忙碌为红色圆圈。这是色盲友好的,因为用户无论如何都可以通过识别形状来了解联系状态。