2012-07-12 63 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使用形狀和顏色來指示接觸狀態。在線用戶爲綠色矩形,客戶爲黃色三角形,繁忙爲紅色圓圈。這是色盲友好的,因爲用戶可以通過識別形狀來了解聯繫人狀態。