- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Wed, 22 Sep 2010 10:47:02 -0400
Consider this code: gradient.addColorStop("1.0","rgba( 0, 0, 0, 0"); where |gradient| is a canvas radial gradient. Note the lack of ')' at the end of the rgba string there. What's the correct behavior? The spec says: If the color cannot be parsed as a CSS color, then a SYNTAX_ERR exception must be raised. However an actual CSS parser parsing that string as a color would infer the closing ')' per CSS 2.1 section 4.2 the item about "unexpected EOF". Note that this is a tokenization-level requirement, as far as I can tell, so this happens before the syntax rules for productions like <color> are applied. Observed behavior in UAs is: * Webkit simply doesn't implement CSS 2.1 section 4.2 correctly * Opera throws an exception from the addColorStop call above, but shows lime text if loading this: data:text/html,<span style="color: rgb(0, 255, 0">Lime</span> * Gecko shows lime text in the HTML testcase and treats the color stop above as valid rgba(0, 0, 0, 0). Clearly I happen to think Gecko's behavior is the sane one here, but there's a clear interoperability problem either way. Certainly Opera and Gecko interpreted the spec differently. -Boris
Received on Wednesday, 22 September 2010 07:47:02 UTC