- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Mon, 30 Apr 2012 09:56:57 -0700
- To: "Kang-Hao (Kenny) Lu" <kennyluck@csail.mit.edu>
- Cc: WWW Style <www-style@w3.org>
On Mon, Apr 30, 2012 at 9:06 AM, Kang-Hao (Kenny) Lu
<kennyluck@csail.mit.edu> wrote:
> The prose for this part, used for :nth-child, etc., is
>
> # The argument to :nth-child() must match the grammar below, where
> # INTEGER matches the token [0-9]+ and the rest of the tokenization
> # is given by the Lexical scanner in section 10.2:
> #
> # nth
> # : S* [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]? |
> # ['-'|'+']? INTEGER | {O}{D}{D} | {E}{V}{E}{N} ] S*
> # ;
>
> . This couldn't quite explain why ":nth-child(1/**/n)" is ignored in all
> the browsers I tested (IE9, Firefox 12, Chromium 18, Opera12alpha) with
> a case like
>
> data:text/html,<style>body:nth-child(1/**/n) { color: red; }</style>Test
>
> . Should we consider this browser bugs or should the spec match browsers
> here?
Or, wait. Actually, this grammar is busted. It is impossible to scan
the above, since "1n" will already have been tokenized as a DIMENSION.
Possibly browsers handle that implicitly, and *actually* match a
grammar something like:
<dimension> [ [ + | - ] <integer> ]?
| <keyword> [ [ + | - ] <integer> ]?
| <integer>
| odd
| even
...with checks that the DIMENSION and KEYWORD are just 'n'.
So, this is a Selectors bug, not a browser bug. We can't blame
browsers for failing to do an impossible thing. ^_^
~TJ
Received on Monday, 30 April 2012 16:57:45 UTC