- From: Gray Zhang <otakustay@gmail.com>
- Date: Mon, 24 Oct 2011 20:06:14 +0800
- To: Peter Beverloo <beverloo@google.com>
- Cc: www-style@w3.org
- Message-ID: <CAKWkPy7fScdMOcRHsVxFYd+hREWr4CTxoRpPYPuTpqSyPWXhoQ@mail.gmail.com>
I don't agree with this opinion. Comma (,) should be the SINGLE separator between *values* while Semicolon(;) should be the separator between *components of values*. Consider some HTTP headers: * Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 * Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3 * Cache-Control:private, max-age=0 * Content-Type:text/html; charset=UTF-8 Note that some of these HTTP headers are used in <meta> along with the http-equiv attribute, and it's been established among Web developers that comma (,) is the separator between *values*, not semicolon (;) They all use comma (,) to separate 1st-level values, and semicolon (;) for sub-level parameters (such as q=0.9 or charset=UTF-8). Once we adopt semicolon as a valid separator between 1st-level separator, we would be forced to introduce a new separator when we want to make a value accept some sub-level parameters in the future, and this is not a rare case (think of the historical 'q' parameter in Accept-* HTTP header). On Fri, Oct 21, 2011 at 6:35 PM, Peter Beverloo <beverloo@google.com> wrote: > On Fri, Oct 21, 2011 at 10:14 AM, Rune Lillesveen <rune@opera.com> wrote: > > On Thu, 20 Oct 2011 19:12:01 +0200, Peter Beverloo <beverloo@google.com> > > wrote: > > > >> The CSS Device Adapt specification defines a parsing algorithm[1] for > >> the meta-element viewport content, which has been based on WebKit's > >> implementation that shipped with iOS4. This algorithm only accepts > >> commas as separators between properties. > > > > First, it's in a non-normative section, and we want UAs to move towards > an > > @viewport implementation. That being said, it's there to suggest a > mapping > > between viewport meta and @viewport in a transition phase. > > > >> In reality, web authors are using both commas as semi-colons. A wide > >> range of websites, including CNN[2], Flickr[3] and Reddit[4] depend on > >> this behavior, which has led at least Mozilla and Microsoft to > >> implement it and, in case of the latter, write about it[5]. > > > > Yes, and they have to add some combination of scale properties to > compensate > > for the fact that "width=device-width;" is the same as "width=0" in > Safari > > and Opera (see comments for the mentioned sites below). > > The fact that the numeric properties' values are being recognized are > purely a work-around, which, in case of WebKit-based browsers, depends > on disregarding trailing garbage for numeric values to parse these > correctly (warnings for which are being shown in Web Inspector). > > >> I think the specification should adapt to reflect what authors are > >> doing. While it's unfortunate that the divergence between commas and > >> semi-colons happened, it's important for compatibility among mobile > >> browsers. > > > > Two alternative proposed changes: > > > > 1. Keep the algorithm as it is and mention that some implementations > accept > > ';' as a separator in addition to ','. > > > > 2. Modify the algorithm to include ';' as a separator and say that it's > > based on the Safari implementation with the ';' added as a recognized > > separator. > > Your second alternative proposal describes the change I'm proposing, > with the addition of a note saying that it differs there from Safari's > implementation. > > >> [1] http://dev.w3.org/csswg/css-device-adapt/#parsing-algorithm > >> [2] http://m.cnn.com > > > > Does not give me a viewport meta in Opera. > > I verified that they do give a viewport meta in WebKit, so they > probably are sniffing for the browser. For reference: > > <meta xmlns="http://www.w3.org/1999/xhtml" > name="viewport" > content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> > > >> [3] http://m.flickr.com > > > > "width=device-width; initial-scale=1.0; maximum-scale=1.0; > user-scalable=0;" > > > > Works in Safari because the over-constraining scale values cause the > width > > to end up at device-width anyway. This would not have worked in Safari or > > Opera: "width=device-width; user-scalable=0;". > > As said, this is because strtod() accepts trailing garbage, which > applies to the numeric values. I don't expect authors to know about > this difference. > > Peter > > >> [4] http://www.reddit.com/.compact (or http://m.reddit.com/) > > > > Same as for m.flickr.com. > > > >> [5] > >> > http://blogs.msdn.com/b/iemobile/archive/2010/11/22/the-ie-mobile-viewport-on-windows-phone-7.aspx > > > > -- > > Rune Lillesveen > > Layout Group Manager > > Core Technology Department > > Opera Software ASA > > > > > > -- > Peter Beverloo | Software Engineer | beverloo@google.com | +31-6-41000722 > >
Received on Monday, 24 October 2011 12:06:55 UTC