2012-07-12 58 views
1

我一直在电子阅读器上测试一个HTML5 web应用程序,并且我大部分工作正常,但颜色都是混乱的(它是单色的)。我的应用程序每秒都会使用很多颜色进行更新。我需要这个在彩色显示器上运行,所以我需要检测它是否是单色的。Javascript:检测单色显示

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

我的想法至今都:

  • 始终显示单色于从用户代理从帆布/ navigator.appVersion
  • 样品位报告16-bit色彩
  • 嗅嗅(虽然我认为可能的设备谎言以及)

是否可以安全地假设16位颜色=单色?或者还有另一个我可以忽略的诀窍,那就是更可靠吗?

回答

2

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

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

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

+0

这听起来像是一个很好的解决方案。这只是电子墨水屏幕的一个问题,但我喜欢将它作为所有用户的选项提供的想法。 – tjameson 2012-07-13 00:43:24

0

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

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

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

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