- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Thu, 31 May 2012 15:33:06 -0700
- To: Joe Thomas <joethomas@motorola.com>
- Cc: "www-style@w3.org" <www-style@w3.org>, Brian Manthos <brianman@microsoft.com>
On Thu, May 31, 2012 at 2:50 PM, Joe Thomas <joethomas@motorola.com> wrote: > I will try to explain the IE6 issue with an example. > > Assuming that we have a CSS3 UA and it generates the background shorthand > property in getComputedStyle in the following order > > red border-box url(dummy://test.png) 50% 50% / cover. > > And assuming that the server feeds this generated result from CSS3 Browser > to a CSS2.1 compatible browser like IE6. IE6 fails to parse even those > properties which it supports in background shorthand. > In the above case, IE6 parses only background-color correctly as it comes > before newly introduced properties. IE6 stops parsing whenever it encounters > an unsupported property-value like border-box in the above case. > > At the same time, if we restrict the order of background shorthand > properties generated by a CSS3 UA in such a way that CSS2.1 properties comes > before the newly introduced properties in CSS3, then IE6 parses all the > CSS2.1 properties correctly and discards the new properties which are at the > end. > > So if we change the above order to "red url(dummy://test.png) 50% 50% / > cover border-box", IE6 parses bg-color, bg-image and bg-position correctly > and discards the rest. So with this new order, IE6 can parse atleast all the > properties it supports. > > Please let me know whether that make sense. So you're saying that you're serializing property values in one browser, sending them to the server, and later using them to style other pages in another browser? That seems pretty odd, if so. Can you clarify? If IE6 actually does treat that declaration as valid, and just ignores everything from the first thing it doesn't recognize, that's *really* incorrect behavior. No compliant browser does that - the specs very clearly state that you should throw away the whole declaration, *precisely* because of this kind of bad behavior. Anyway, the correct solution, if you are indeed doing the weird thing there, is to parse it yourself and serve only the parts that IE6 actually understands. ~TJ
Received on Thursday, 31 May 2012 22:33:55 UTC