2012-06-29 67 views
7
  1. 我設置Chrome的RGBA()BG-顏色(Win7的,19.0.1084.56)
  2. 我得到的背景顏色與window.getComputedStyle(),& 它是不同的
  3. 我設置一個新的元素
  4. 我再次找回它,上檢索到的值不同其再次

這裏是一個小提琴:http://jsfiddle.net/zupa/KsuMp/Chrome getComputedStyle()返回錯誤的RGBA顏色?

在我的情況中,第一4塊具有在Chrome下列內容:

  • BG-顏色:RGBA(255,0,0,0.503906)
  • BG-顏色:RGBA(255,0 ,0,0.5)
  • BG-顏色:RGBA(255,0,0,0.496094)
  • BG-顏色:RGBA(255,0,0,0.496094)

在Firefox,我得到常量rgba(255,0,0,0.506)

所以,這似乎是一個錯誤。你能證明我錯了或建議一種解決方法嗎?我需要一個wysiwyg編輯器的顏色,這會殺死我的單元測試。

+0

有趣。我想這是一個舍入誤差。如果你使用'0.5'作爲值 - http://jsfiddle.net/Synmu/1/ - 你會得到一致的結果(但不是'0.5')。 – fuxia

+0

@toscho - 它返回的一致結果與0.5相距僅爲1/256,所以我看到它將0.5轉換爲x7F而不是x80。這是有道理的,因爲它們不能將1.0映射到x100,因爲最高可能值是xFF。所以這可能是一個適合可用規模的調整? – zupa

+0

這是一個更糟糕的情況:http://jsfiddle.net/zupa/KsuMp/27/ - >從10%下降到0%OMG。但它不會從11%下降:http://jsfiddle.net/zupa/KsuMp/29/ – zupa

回答

0

作爲解決方法,您可以嘗試將原始RGBA顏色存儲在元素的data- *屬性(data-original-background也許?)中,並使用$().attr()從那裏獲取舊顏色值。這樣,即使Chrome會以一種奇怪的方式進行循環,它至少會以相同的方式循環每個循環,因爲它們都使用相同的基本值。

編輯:這是你的小提琴我修改的理念 http://jsfiddle.net/aJfPn/1/

+0

也:即使data- *被稱爲HTML5,因爲它只是添加一個新元素,它可以通過各種方法兼容到IE6。 jQuery實現了正確的方法來修改每個瀏覽器的data- *屬性,所以你不必擔心它:) –

+0

這不是一個真正的選擇,因爲我想更新選擇變化時的顏色狀態這一頁。問題是,如果bg-color甚至沒有在任何給定的元素上定義,而是從具有帶顏色定義的類的父元素繼承而來?對於本地定義,還可以檢查style屬性。謝謝你。 – zupa

-1

在大學,我瞭解到,你永遠也不會測試,如果彩車是相同的,因爲舍入誤差的一個。在測試中只包含一個寬容。

+1

如果你分配一個浮點數10.0並返回9.0,並且你告訴我這是一個舍入錯誤,如果9.0是一個穩定的值,我很好。但是,如果我將它分配到9.0並回到8.0,那麼它甚至不穩定。那是我的問題,我不知道是否將這個虛構的9.0放大或縮小。現在,它似乎在Chrome中得到修復。 – zupa