Tue, 14 Apr 2015 15:30:53 +0200
(merge)
1.1 --- a/css-ui-4/Overview.bs Tue Apr 14 15:30:21 2015 +0200 1.2 +++ b/css-ui-4/Overview.bs Tue Apr 14 15:30:53 2015 +0200 1.3 @@ -195,8 +195,14 @@ 1.4 If the element has descendants on which 'user-select' does not compute to ''user-select/none'', 1.5 these descendants must be included in a selection extending across the element. 1.6 1.7 + As 'user-select' is a UI convenience mechanism, 1.8 + not a copy protection mechanism, 1.9 + the UA may provide an alternative way for the user 1.10 + to explicitly select the text even when 'user-select' is ''user-select/none''. 1.11 + 1.12 Note: ''user-select/none'' is not a copy protection mechanism, 1.13 and using it as such is ineffective: 1.14 + User Agents are allowed to provide ways to bypass it, 1.15 it will have no effect on legacy User Agents that do not support it, 1.16 and the user can disable it through the user style sheet or equivalent mechanisms 1.17 on UAs that do anyway.
2.1 --- a/cssom-view/Overview.bs Tue Apr 14 15:30:21 2015 +0200 2.2 +++ b/cssom-view/Overview.bs Tue Apr 14 15:30:53 2015 +0200 2.3 @@ -12,66 +12,67 @@ 2.4 Editor: Simon Pieters, Opera Software ASA http://www.opera.com, [email protected] 2.5 Editor: Glenn Adams, Cox Communications, Inc. http://www.cox.com, [email protected], http://www.w3.org/wiki/User:Gadams 2.6 Former Editor: Anne van Kesteren, Opera Software ASA http://www.opera.com, [email protected], https://annevankesteren.nl/ 2.7 +!Issues list: <a href="https://www.w3.org/Bugs/Public/buglist.cgi?product=CSS&component=CSSOM%20View&resolution=---">Bugzilla</a> (<a href="https://www.w3.org/Bugs/Public/enter_bug.cgi?product=CSS&component=CSSOM%20View">file a bug</a>) 2.8 Abstract: The APIs introduced by this specification provide authors with a way to inspect and manipulate the visual view of a document. This includes getting the position of element layout boxes, obtaining the width of the viewport through script, and also scrolling an element. 2.9 Ignored Terms: open() 2.10 </pre> 2.11 2.12 <pre class='anchors'> 2.13 urlPrefix: https://html.spec.whatwg.org/multipage/ 2.14 - urlPrefix: infrastructure.html 2.15 - type: dfn; text: html elements 2.16 - urlPrefix: browsers.html 2.17 - type: interface; text: WindowProxy 2.18 - type: dfn 2.19 - text: browsing context 2.20 - text: auxiliary browsing context 2.21 - text: familiar with 2.22 - text: associated Document; url: concept-document-window 2.23 - text: same origin 2.24 - urlPrefix: webappapis.html 2.25 - type: dfn 2.26 - text: responsible browsing context 2.27 - text: incumbent settings object 2.28 - text: event handler 2.29 - text: event handler event type 2.30 - text: event handler IDL attributes 2.31 - urlPrefix: infrastructure.html 2.32 - type: dfn 2.33 - text: split a string on commas 2.34 - text: skip whitespace 2.35 - text: collect a sequence of characters 2.36 - text: space character 2.37 - text: converted to ascii lowercase 2.38 - text: rules for parsing integers 2.39 + urlPrefix: infrastructure.html 2.40 + type: dfn; text: html elements 2.41 + urlPrefix: browsers.html 2.42 + type: interface; text: WindowProxy 2.43 + type: dfn 2.44 + text: browsing context 2.45 + text: auxiliary browsing context 2.46 + text: familiar with 2.47 + text: associated Document; url: concept-document-window 2.48 + text: same origin 2.49 + urlPrefix: webappapis.html 2.50 + type: dfn 2.51 + text: responsible browsing context 2.52 + text: incumbent settings object 2.53 + text: event handler 2.54 + text: event handler event type 2.55 + text: event handler IDL attributes 2.56 + urlPrefix: infrastructure.html 2.57 + type: dfn 2.58 + text: split a string on commas 2.59 + text: skip whitespace 2.60 + text: collect a sequence of characters 2.61 + text: space character 2.62 + text: converted to ascii lowercase 2.63 + text: rules for parsing integers 2.64 urlPrefix: http://dev.w3.org/csswg/cssom/ 2.65 - type: dfn 2.66 - text: parse a media query list 2.67 - text: serialize a media query list 2.68 + type: dfn 2.69 + text: parse a media query list 2.70 + text: serialize a media query list 2.71 urlPrefix: https://dom.spec.whatwg.org/#concept- 2.72 - type: dfn 2.73 - text: context object 2.74 - text: dispatch; url: event-dispatch 2.75 - text: event 2.76 - text: event listener 2.77 - text: quirks mode; url: document-quirks 2.78 - text: fire an event; url: event-fire 2.79 - text: node document 2.80 + type: dfn 2.81 + text: context object 2.82 + text: dispatch; url: event-dispatch 2.83 + text: event 2.84 + text: event listener 2.85 + text: quirks mode; url: document-quirks 2.86 + text: fire an event; url: event-fire 2.87 + text: node document 2.88 urlPrefix: https://dom.spec.whatwg.org/ 2.89 - type: attribute; 2.90 - for: Event; urlPrefix: #dom-Event- 2.91 - text: type 2.92 - text: isTrusted 2.93 - for: Range; urlPrefix: #dom-Range- 2.94 - text: startContainer 2.95 - text: startOffset 2.96 - type: dfn; text: dispatch flag 2.97 + type: attribute; 2.98 + for: Event; urlPrefix: #dom-Event- 2.99 + text: type 2.100 + text: isTrusted 2.101 + for: Range; urlPrefix: #dom-Range- 2.102 + text: startContainer 2.103 + text: startOffset 2.104 + type: dfn; text: dispatch flag 2.105 urlPrefix: http://www.w3.org/TR/CSS21/visuren.html 2.106 - type: dfn; text: anonymous block box; url: #anonymous-block-level 2.107 + type: dfn; text: anonymous block box; url: #anonymous-block-level 2.108 urlPrefix: http://heycam.github.io/webidl/ 2.109 - type: interface; urlPrefix: #idl- 2.110 - text: double 2.111 - text: long 2.112 - type: dfn; text: converted to an IDL value; url: dfn-convert-ecmascript-to-idl-value 2.113 + type: interface; urlPrefix: #idl- 2.114 + text: double 2.115 + text: long 2.116 + type: dfn; text: converted to an IDL value; url: dfn-convert-ecmascript-to-idl-value 2.117 url: http://www.w3.org/TR/DOM-Level-3-Events/#interface-MouseEvent; type: interface; text: MouseEvent 2.118 </pre> 2.119 2.120 @@ -81,6 +82,8 @@ 2.121 spec:css-position-3; type:property; text:position 2.122 </pre> 2.123 2.124 +<script src=https://resources.whatwg.org/file-bug.js async></script> 2.125 + 2.126 Background {#background} 2.127 ======================== 2.128 2.129 @@ -115,23 +118,33 @@ 2.130 Elements and <a>viewports</a> have an associated <dfn>scrolling box</dfn> if has a scrolling mechanism<!--XXX xref--> or it overflows 2.131 its content area<!--XXX xref--> and the used value of the 'overflow-x' or 'overflow-y' property is ''overflow/hidden''. [[!CSS3-BOX]] 2.132 2.133 +An element is <dfn>potentially scrollable</dfn> if all of the following conditions are true: 2.134 + 2.135 +* The element has an associated <a>CSS layout box</a>. 2.136 +* The element is not <a>the HTML <code>body</code> element</a>, or it is and 2.137 + the root element's used value of the 'overflow-x' or 'overflow-y' properties is not ''overflow/visible''. 2.138 +* The element's used value of the 'overflow-x' or 'overflow-y' properties is not ''overflow/visible''. 2.139 + 2.140 +Note: An element that is <a>potentially scrollable</a> might not have a <a>scrolling box</a>. 2.141 +For instance, it could have 'overflow' set to ''overflow/auto'' but not have its content overflowing its content area. 2.142 + 2.143 A <a>scrolling box</a> of a <a>viewport</a> or element has two <dfn>overflow directions</dfn>, depending on the <a>viewportâs</a> or 2.144 element's <a>block flow direction</a> and <a>inline base direction</a>, as follows: 2.145 2.146 <dl class=switch> 2.147 - <dt>If the <a>block flow direction</a> is top-to-bottom and the <a>inline base direction</a> is left-to-right 2.148 - <dt>If the <a>block flow direction</a> is left-to-right and the <a>inline base direction</a> is left-to-right 2.149 - <dd>Rightward and downward. 2.150 + <dt>If the <a>block flow direction</a> is top-to-bottom and the <a>inline base direction</a> is left-to-right 2.151 + <dt>If the <a>block flow direction</a> is left-to-right and the <a>inline base direction</a> is left-to-right 2.152 + <dd>Rightward and downward. 2.153 2.154 - <dt>If the <a>block flow direction</a> is top-to-bottom and the <a>inline base direction</a> is right-to-left 2.155 - <dt>If the <a>block flow direction</a> is right-to-left and the <a>inline base direction</a> is left-to-right 2.156 - <dd>Leftward and downward. 2.157 + <dt>If the <a>block flow direction</a> is top-to-bottom and the <a>inline base direction</a> is right-to-left 2.158 + <dt>If the <a>block flow direction</a> is right-to-left and the <a>inline base direction</a> is left-to-right 2.159 + <dd>Leftward and downward. 2.160 2.161 - <dt>If the <a>block flow direction</a> is right-to-left and the <a>inline base direction</a> is right-to-left 2.162 - <dd>Leftward and upward. 2.163 + <dt>If the <a>block flow direction</a> is right-to-left and the <a>inline base direction</a> is right-to-left 2.164 + <dd>Leftward and upward. 2.165 2.166 - <dt>If the <a>block flow direction</a> is left-to-right and the <a>inline base direction</a> is right-to-left 2.167 - <dd>Righward and upward. 2.168 + <dt>If the <a>block flow direction</a> is left-to-right and the <a>inline base direction</a> is right-to-left 2.169 + <dd>Righward and upward. 2.170 </dl> 2.171 2.172 The term <dfn>scrolling area</dfn> refers to a box of a <a>viewport</a> or an element that has the following edges, depending on the 2.173 @@ -389,45 +402,45 @@ 2.174 enum ScrollBehavior { "auto", "instant", "smooth" }; 2.175 2.176 dictionary ScrollOptions { 2.177 - ScrollBehavior behavior = "auto"; 2.178 + ScrollBehavior behavior = "auto"; 2.179 }; 2.180 dictionary ScrollToOptions : ScrollOptions { 2.181 - unrestricted double left; 2.182 - unrestricted double top; 2.183 + unrestricted double left; 2.184 + unrestricted double top; 2.185 }; 2.186 2.187 partial interface Window { 2.188 - [NewObject] MediaQueryList matchMedia(DOMString query); 2.189 - [SameObject, Replaceable] readonly attribute Screen screen; 2.190 + [NewObject] MediaQueryList matchMedia(DOMString query); 2.191 + [SameObject, Replaceable] readonly attribute Screen screen; 2.192 2.193 - // browsing context 2.194 - void moveTo(long x, long y); 2.195 - void moveBy(long x, long y); 2.196 - void resizeTo(long x, long y); 2.197 - void resizeBy(long x, long y); 2.198 + // browsing context 2.199 + void moveTo(long x, long y); 2.200 + void moveBy(long x, long y); 2.201 + void resizeTo(long x, long y); 2.202 + void resizeBy(long x, long y); 2.203 2.204 - // viewport 2.205 - [Replaceable] readonly attribute long innerWidth; 2.206 - [Replaceable] readonly attribute long innerHeight; 2.207 + // viewport 2.208 + [Replaceable] readonly attribute long innerWidth; 2.209 + [Replaceable] readonly attribute long innerHeight; 2.210 2.211 - // viewport scrolling 2.212 - [Replaceable] readonly attribute double scrollX; 2.213 - [Replaceable] readonly attribute double pageXOffset; 2.214 - [Replaceable] readonly attribute double scrollY; 2.215 - [Replaceable] readonly attribute double pageYOffset; 2.216 - void scroll(optional ScrollToOptions options); 2.217 - void scroll(unrestricted double x, unrestricted double y); 2.218 - void scrollTo(optional ScrollToOptions options); 2.219 - void scrollTo(unrestricted double x, unrestricted double y); 2.220 - void scrollBy(optional ScrollToOptions options); 2.221 - void scrollBy(unrestricted double x, unrestricted double y); 2.222 + // viewport scrolling 2.223 + [Replaceable] readonly attribute double scrollX; 2.224 + [Replaceable] readonly attribute double pageXOffset; 2.225 + [Replaceable] readonly attribute double scrollY; 2.226 + [Replaceable] readonly attribute double pageYOffset; 2.227 + void scroll(optional ScrollToOptions options); 2.228 + void scroll(unrestricted double x, unrestricted double y); 2.229 + void scrollTo(optional ScrollToOptions options); 2.230 + void scrollTo(unrestricted double x, unrestricted double y); 2.231 + void scrollBy(optional ScrollToOptions options); 2.232 + void scrollBy(unrestricted double x, unrestricted double y); 2.233 2.234 - // client 2.235 - [Replaceable] readonly attribute long screenX; 2.236 - [Replaceable] readonly attribute long screenY; 2.237 - [Replaceable] readonly attribute long outerWidth; 2.238 - [Replaceable] readonly attribute long outerHeight; 2.239 - [Replaceable] readonly attribute double devicePixelRatio; 2.240 + // client 2.241 + [Replaceable] readonly attribute long screenX; 2.242 + [Replaceable] readonly attribute long screenY; 2.243 + [Replaceable] readonly attribute long outerWidth; 2.244 + [Replaceable] readonly attribute long outerHeight; 2.245 + [Replaceable] readonly attribute double devicePixelRatio; 2.246 }; 2.247 </pre> 2.248 2.249 @@ -497,9 +510,9 @@ 2.250 scroll bar (if any), or zero if there is no <a>viewport</a>. <!--fingerprint--> 2.251 2.252 <div class='example'> 2.253 - The following snippet shows how to obtain the width of the viewport: 2.254 + The following snippet shows how to obtain the width of the viewport: 2.255 2.256 - <pre>var viewportWidth = innerWidth</pre> 2.257 + <pre>var viewportWidth = innerWidth</pre> 2.258 </div> 2.259 2.260 The <dfn attribute for=Window>innerHeight</dfn> attribute must return the <a>viewport</a> height including the size of a rendered 2.261 @@ -523,45 +536,45 @@ 2.262 steps must be run: 2.263 2.264 1. If invoked with one argument, follow these substeps: 2.265 - 1. Let <var>options</var> be the argument. 2.266 - 1. Let <var>x</var> be the value of the {{ScrollToOptions/left}} dictionary member of <var>options</var>, if present, 2.267 - or the <a>viewportâs</a> current scroll position on the x axis otherwise. 2.268 - 1. Let <var>y</var> be the value of the {{ScrollToOptions/top}} dictionary member of <var>options</var>, if present, 2.269 - or the <a>viewportâs</a> current scroll position on the y axis otherwise. 2.270 + 1. Let <var>options</var> be the argument. 2.271 + 1. Let <var>x</var> be the value of the {{ScrollToOptions/left}} dictionary member of <var>options</var>, if present, 2.272 + or the <a>viewportâs</a> current scroll position on the x axis otherwise. 2.273 + 1. Let <var>y</var> be the value of the {{ScrollToOptions/top}} dictionary member of <var>options</var>, if present, 2.274 + or the <a>viewportâs</a> current scroll position on the y axis otherwise. 2.275 1. If invoked with two arguments, follow these substeps: 2.276 - 1. Let <var>options</var> be null <a lt="converted to an IDL value">converted</a> to a {{ScrollToOptions}} dictionary. [[!WEBIDL]] 2.277 - 1. Let <var>x</var> and <var>y</var> be the arguments, respectively. 2.278 + 1. Let <var>options</var> be null <a lt="converted to an IDL value">converted</a> to a {{ScrollToOptions}} dictionary. [[!WEBIDL]] 2.279 + 1. Let <var>x</var> and <var>y</var> be the arguments, respectively. 2.280 1. <a>Normalize non-finite values</a> for <var>x</var> and <var>y</var>. 2.281 1. If there is no <a>viewport</a>, abort these steps. 2.282 1. Let <var>viewport width</var> be the width of the <a>viewport</a> excluding the width of the scroll bar, if any. 2.283 1. Let <var>viewport height</var> be the height of the <a>viewport</a> excluding the height of the scroll bar, if any. 2.284 1. 2.285 - <dl class=switch> 2.286 - <dt>If the <a>viewport</a> has rightward <a>overflow direction</a> 2.287 - <dd>Let <var>x</var> be max(0, min(<var>x</var>, <a>viewport</a> <a>scrolling area</a> width - <var>viewport width</var>)). 2.288 + <dl class=switch> 2.289 + <dt>If the <a>viewport</a> has rightward <a>overflow direction</a> 2.290 + <dd>Let <var>x</var> be max(0, min(<var>x</var>, <a>viewport</a> <a>scrolling area</a> width - <var>viewport width</var>)). 2.291 2.292 - <dt>If the <a>viewport</a> has leftward <a>overflow direction</a> 2.293 - <dd>Let <var>x</var> be min(0, max(<var>x</var>, <var>viewport width</var> - <a>viewport</a> <a>scrolling area</a> width)). 2.294 - </dl> 2.295 + <dt>If the <a>viewport</a> has leftward <a>overflow direction</a> 2.296 + <dd>Let <var>x</var> be min(0, max(<var>x</var>, <var>viewport width</var> - <a>viewport</a> <a>scrolling area</a> width)). 2.297 + </dl> 2.298 1. 2.299 - <dl class=switch> 2.300 - <dt>If the <a>viewport</a> has downward <a>overflow direction</a> 2.301 - <dd>Let <var>y</var> be max(0, min(<var>y</var>, <a>viewport</a> <a>scrolling area</a> height - <var>viewport height</var>)). 2.302 + <dl class=switch> 2.303 + <dt>If the <a>viewport</a> has downward <a>overflow direction</a> 2.304 + <dd>Let <var>y</var> be max(0, min(<var>y</var>, <a>viewport</a> <a>scrolling area</a> height - <var>viewport height</var>)). 2.305 2.306 - <dt>If the <a>viewport</a> has upward <a>overflow direction</a> 2.307 - <dd>Let <var>y</var> be min(0, max(<var>y</var>, <var>viewport height</var> - <a>viewport</a> <a>scrolling area</a> height)). 2.308 - </dl> 2.309 + <dt>If the <a>viewport</a> has upward <a>overflow direction</a> 2.310 + <dd>Let <var>y</var> be min(0, max(<var>y</var>, <var>viewport height</var> - <a>viewport</a> <a>scrolling area</a> height)). 2.311 + </dl> 2.312 1. Let <var>position</var> be the scroll position the <a>viewport</a> would have 2.313 - by aligning the x-coordinate <var>x</var> of the <a>viewport</a> <a>scrolling area</a> 2.314 - with the left of the <a>viewport</a> 2.315 - and aligning the y-coordinate <var>y</var> of the <a>viewport</a> <a>scrolling area</a> 2.316 - with the top of the <a>viewport</a>. 2.317 + by aligning the x-coordinate <var>x</var> of the <a>viewport</a> <a>scrolling area</a> 2.318 + with the left of the <a>viewport</a> 2.319 + and aligning the y-coordinate <var>y</var> of the <a>viewport</a> <a>scrolling area</a> 2.320 + with the top of the <a>viewport</a>. 2.321 1. If <var>position</var> is the same as the <a>viewportâs</a> current scroll position, 2.322 - and the <a>viewport</a> does not have an ongoing <a>smooth scroll</a>, abort these steps. 2.323 + and the <a>viewport</a> does not have an ongoing <a>smooth scroll</a>, abort these steps. 2.324 1. Let <var>document</var> be the <a>viewportâs</a> associated {{Document}}. 2.325 1. <a>Perform a scroll</a> of the <a>viewport</a> to <var>position</var>, 2.326 - <var>document</var>'s root element as the associated element, if there is one, or null otherwise, 2.327 - and the scroll behavior being the value of the {{ScrollOptions/behavior}} dictionary member of <var>options</var>. 2.328 + <var>document</var>'s root element as the associated element, if there is one, or null otherwise, 2.329 + and the scroll behavior being the value of the {{ScrollOptions/behavior}} dictionary member of <var>options</var>. 2.330 2.331 When the <dfn method for=Window lt="scrollTo(options)|scrollTo(x, y)">scrollTo()</dfn> method is invoked, the 2.332 user agent must act as if the {{Window/scroll()}} method was invoked with the same arguments. 2.333 @@ -570,10 +583,10 @@ 2.334 user agent must run these steps: 2.335 2.336 1. If invoked with two arguments, follow these substeps: 2.337 - 1. Let <var>options</var> be null <a lt="converted to an IDL value">converted</a> to a {{ScrollToOptions}} dictionary. [[!WEBIDL]] 2.338 - 1. Let <var>x</var> and <var>y</var> be the arguments, respectively. 2.339 - 1. Let the {{ScrollToOptions/left}} dictionary member of <var>options</var> have the value <var>x</var>. 2.340 - 1. Let the {{ScrollToOptions/top}} dictionary member of <var>options</var> have the value <var>y</var>. 2.341 + 1. Let <var>options</var> be null <a lt="converted to an IDL value">converted</a> to a {{ScrollToOptions}} dictionary. [[!WEBIDL]] 2.342 + 1. Let <var>x</var> and <var>y</var> be the arguments, respectively. 2.343 + 1. Let the {{ScrollToOptions/left}} dictionary member of <var>options</var> have the value <var>x</var>. 2.344 + 1. Let the {{ScrollToOptions/top}} dictionary member of <var>options</var> have the value <var>y</var>. 2.345 1. <a>Normalize non-finite values</a> for the {{ScrollToOptions/left}} and {{ScrollToOptions/top}} dictionary members of <var>options</var>. 2.346 1. Add the value of {{scrollX}} to the {{ScrollToOptions/left}} dictionary member. 2.347 1. Add the value of {{scrollY}} to the {{ScrollToOptions/top}} dictionary member. 2.348 @@ -618,58 +631,58 @@ 2.349 1. Let <var>tokens</var> be the result of <a lt="split a string on commas">splitting <var>features</var> on commas</a>. 2.350 1. Let <var>parsed features</var> be a new empty dictionary. 2.351 1. <i>Token loop</i>: For each token <var>token</var> in <var>tokens</var>, follow these substeps: 2.352 - 1. Let <var>input</var> be <var>token</var>. 2.353 - 1. Let <var>position</var> point at the first character of <var>input</var>. 2.354 - 1. <a>Skip whitespace</a>. 2.355 - 1. <a>Collect a sequence of characters</a> that are not <a>space characters</a> nor "<code>=</code>" (U+003D). 2.356 - Let <var>name</var> be the collected characters, <a>converted to ASCII lowercase</a>. 2.357 - 1. If <var>name</var> is in <var>parsed features</var> or if <var>name</var> is not a <a>supported <code>open()</code> feature name</a>, 2.358 - continue <i>token loop</i>. 2.359 - 1. <a>Skip whitespace</a>. 2.360 - 1. If the character at <var>position</var> is not "<code>=</code>" (U+003D), continue <i>token loop</i>. 2.361 - 1. Advance <var>position</var> by one. 2.362 - 1. If <var>position</var> is past the end of <var>input</var>, continue <i>token loop</i>. 2.363 - 1. <a>Collect a sequence of characters</a> that are any characters. Let <var>raw value</var> be the collected characters. 2.364 - 1. Let <var>value</var> be the result of invoking the <a>rules for parsing integers</a> on <var>raw value</var>. 2.365 - 1. If <var>value</var> is an error, continue <i>token loop</i>. 2.366 - 1. Set <var>name</var> in <var>parsed features</var> to <var>value</var>. 2.367 + 1. Let <var>input</var> be <var>token</var>. 2.368 + 1. Let <var>position</var> point at the first character of <var>input</var>. 2.369 + 1. <a>Skip whitespace</a>. 2.370 + 1. <a>Collect a sequence of characters</a> that are not <a>space characters</a> nor "<code>=</code>" (U+003D). 2.371 + Let <var>name</var> be the collected characters, <a>converted to ASCII lowercase</a>. 2.372 + 1. If <var>name</var> is in <var>parsed features</var> or if <var>name</var> is not a <a>supported <code>open()</code> feature name</a>, 2.373 + continue <i>token loop</i>. 2.374 + 1. <a>Skip whitespace</a>. 2.375 + 1. If the character at <var>position</var> is not "<code>=</code>" (U+003D), continue <i>token loop</i>. 2.376 + 1. Advance <var>position</var> by one. 2.377 + 1. If <var>position</var> is past the end of <var>input</var>, continue <i>token loop</i>. 2.378 + 1. <a>Collect a sequence of characters</a> that are any characters. Let <var>raw value</var> be the collected characters. 2.379 + 1. Let <var>value</var> be the result of invoking the <a>rules for parsing integers</a> on <var>raw value</var>. 2.380 + 1. If <var>value</var> is an error, continue <i>token loop</i>. 2.381 + 1. Set <var>name</var> in <var>parsed features</var> to <var>value</var>. 2.382 1. If <a for="supported open() feature name">left</a> is present in <var>parsed features</var>, follow these substeps: 2.383 - 1. Let <var>x</var> be the value of <a for="supported open() feature name">left</a>. 2.384 - 1. Optionally, clamp <var>x</var> in a user-agent-defined manner so that the window does not move outside the available space. 2.385 - 1. Optionally, move <var>target</var>'s window such that the window's left edge is at the horizontal coordinate <var>x</var> relative to the left edge of 2.386 - the output device, measured in CSS pixels of <var>target</var>. The positive axis is rightward. 2.387 + 1. Let <var>x</var> be the value of <a for="supported open() feature name">left</a>. 2.388 + 1. Optionally, clamp <var>x</var> in a user-agent-defined manner so that the window does not move outside the available space. 2.389 + 1. Optionally, move <var>target</var>'s window such that the window's left edge is at the horizontal coordinate <var>x</var> relative to the left edge of 2.390 + the output device, measured in CSS pixels of <var>target</var>. The positive axis is rightward. 2.391 1. If <a for="supported open() feature name">top</a> is present in <var>parsed features</var>, follow these substeps: 2.392 - 1. Let <var>y</var> be the value of <a for="supported open() feature name">top</a>. 2.393 - 1. Optionally, clamp <var>y</var> in a user-agent-defined manner so that the window does not move outside the available space. 2.394 - 1. Optionally, move <var>target</var>'s window such that the window's top edge is at the vertical coordinate <var>y</var> relative to the top edge of 2.395 - the output device, measured in CSS pixels of <var>target</var>. The positive axis is downward. 2.396 + 1. Let <var>y</var> be the value of <a for="supported open() feature name">top</a>. 2.397 + 1. Optionally, clamp <var>y</var> in a user-agent-defined manner so that the window does not move outside the available space. 2.398 + 1. Optionally, move <var>target</var>'s window such that the window's top edge is at the vertical coordinate <var>y</var> relative to the top edge of 2.399 + the output device, measured in CSS pixels of <var>target</var>. The positive axis is downward. 2.400 1. If <a for="supported open() feature name">width</a> is present in <var>parsed features</var>, follow these substeps: 2.401 - 1. Let <var>x</var> be the value of <a for="supported open() feature name">width</a>. 2.402 - 1. Optionally, clamp <var>x</var> in a user-agent-defined manner so that the window does not get too small or bigger than the available space. 2.403 - 1. Optionally, size <var>target</var>'s window by moving its right edge such that the distance between the left and right edges of the viewport are 2.404 - <var>x</var> CSS pixels of <var>target</var>. 2.405 - 1. Optionally, move <var>target</var>'s window in a user-agent-defined manner so that it does not grow outside the available space. 2.406 + 1. Let <var>x</var> be the value of <a for="supported open() feature name">width</a>. 2.407 + 1. Optionally, clamp <var>x</var> in a user-agent-defined manner so that the window does not get too small or bigger than the available space. 2.408 + 1. Optionally, size <var>target</var>'s window by moving its right edge such that the distance between the left and right edges of the viewport are 2.409 + <var>x</var> CSS pixels of <var>target</var>. 2.410 + 1. Optionally, move <var>target</var>'s window in a user-agent-defined manner so that it does not grow outside the available space. 2.411 1. If <a for="supported open() feature name">height</a> is present in <var>parsed features</var>, follow these substeps: 2.412 - 1. Let <var>y</var> be the value of <a for="supported open() feature name">height</a>. 2.413 - 1. Optionally, clamp <var>y</var> in a user-agent-defined manner so that the window does not get too small or bigger than the available space. 2.414 - 1. Optionally, size <var>target</var>'s window by moving its bottom edge such that the distance between the top and bottom edges of the viewport are 2.415 - <var>y</var> CSS pixels of <var>target</var>. 2.416 - 1. Optionally, move <var>target</var>'s window in a user-agent-defined manner so that it does not grow outside the available space. 2.417 + 1. Let <var>y</var> be the value of <a for="supported open() feature name">height</a>. 2.418 + 1. Optionally, clamp <var>y</var> in a user-agent-defined manner so that the window does not get too small or bigger than the available space. 2.419 + 1. Optionally, size <var>target</var>'s window by moving its bottom edge such that the distance between the top and bottom edges of the viewport are 2.420 + <var>y</var> CSS pixels of <var>target</var>. 2.421 + 1. Optionally, move <var>target</var>'s window in a user-agent-defined manner so that it does not grow outside the available space. 2.422 2.423 A <dfn export>supported <code>open()</code> feature name</dfn> is one of the following: 2.424 2.425 <dl dfn-for="supported open() feature name" export> 2.426 - <dt><dfn>width</dfn> 2.427 - <dd>The width of the viewport. 2.428 + <dt><dfn>width</dfn> 2.429 + <dd>The width of the viewport. 2.430 2.431 - <dt><dfn>height</dfn> 2.432 - <dd>The height of the viewport. 2.433 + <dt><dfn>height</dfn> 2.434 + <dd>The height of the viewport. 2.435 2.436 - <dt><dfn>left</dfn> 2.437 - <dd>The left position of the window. 2.438 + <dt><dfn>left</dfn> 2.439 + <dd>The left position of the window. 2.440 2.441 - <dt><dfn>top</dfn> 2.442 - <dd>The top position of the window. 2.443 + <dt><dfn>top</dfn> 2.444 + <dd>The top position of the window. 2.445 </dl> 2.446 2.447 2.448 @@ -711,18 +724,18 @@ 2.449 </ol> 2.450 2.451 <div class='example'> 2.452 - A simple piece of code that detects changes in the orientation of the viewport can be written as follows: 2.453 + A simple piece of code that detects changes in the orientation of the viewport can be written as follows: 2.454 2.455 - <pre class='lang-javascript'> 2.456 - function handleOrientationChange(event) { 2.457 - if(event.matches) // landscape 2.458 - … 2.459 - else 2.460 - … 2.461 - } 2.462 - var mql = matchMedia("(orientation:landscape)"); 2.463 - mql.onchange = handleOrientationChange; 2.464 - </pre> 2.465 + <pre class='lang-javascript'> 2.466 + function handleOrientationChange(event) { 2.467 + if(event.matches) // landscape 2.468 + … 2.469 + else 2.470 + … 2.471 + } 2.472 + var mql = matchMedia("(orientation:landscape)"); 2.473 + mql.onchange = handleOrientationChange; 2.474 + </pre> 2.475 </div> 2.476 2.477 <pre class=idl> 2.478 @@ -745,18 +758,18 @@ 2.479 2.480 1. If <var>listener</var> is null, terminate these steps. 2.481 1. Append an <a>event listener</a> to the associated list of <a>event listeners</a> 2.482 - with <b>type</b> set to <code>change</code>, 2.483 - <b>callback</b> set to <var>listener</var>, 2.484 - and <b>capture</b> set to false, 2.485 - unless there already is an <a>event listener</a> in that list 2.486 - with the same <b>type</b>, <b>callback</b>, and <b>capture</b>. 2.487 + with <b>type</b> set to <code>change</code>, 2.488 + <b>callback</b> set to <var>listener</var>, 2.489 + and <b>capture</b> set to false, 2.490 + unless there already is an <a>event listener</a> in that list 2.491 + with the same <b>type</b>, <b>callback</b>, and <b>capture</b>. 2.492 2.493 The <dfn method for=MediaQueryList>removeListener(<var>listener</var>)</dfn> method must run these steps: 2.494 2.495 1. Remove an <a>event listener</a> from the associated list of <a>event listeners</a>, 2.496 - whose <b>type</b> is <code>change</code>, 2.497 - <b>callback</b> is <var>listener</var>, 2.498 - and <b>capture</b> is false. 2.499 + whose <b>type</b> is <code>change</code>, 2.500 + <b>callback</b> is <var>listener</var>, 2.501 + and <b>capture</b> is false. 2.502 2.503 Note: This specification initially had a custom callback mechanism with {{addListener()}} and 2.504 {{removeListener()}}, and the callback was invoked with the associated media query list as argument. 2.505 @@ -846,10 +859,10 @@ 2.506 The <dfn method for=Document>elementFromPoint(<var>x</var>, <var>y</var>)</dfn> method must follow these steps: 2.507 2.508 1. If either argument is negative, <var>x</var> is greater than the <a>viewport</a> width excluding the size of a rendered scroll bar (if any), or 2.509 - <var>y</var> is greater than the <a>viewport</a> height excluding the size of a rendered scroll bar (if any), or there is no <a>viewport</a> 2.510 - associated with the document, return null and terminate these steps. 2.511 + <var>y</var> is greater than the <a>viewport</a> height excluding the size of a rendered scroll bar (if any), or there is no <a>viewport</a> 2.512 + associated with the document, return null and terminate these steps. 2.513 1. If there is a <a>layout box</a> in the <a>viewport</a> that would be a target for hit testing at coordinates <var>x</var>,<var>y</var>, 2.514 - when applying the <a>transforms</a> that apply to the descendants of the <a>viewport</a>, return the associated element and terminate these steps. 2.515 + when applying the <a>transforms</a> that apply to the descendants of the <a>viewport</a>, return the associated element and terminate these steps. 2.516 1. If the document has a root element, return the root element and terminate these steps. 2.517 1. Return null. 2.518 2.519 @@ -857,15 +870,15 @@ 2.520 instance, an element can be excluded from being a target for hit testing by using the 'pointer-events' CSS property. 2.521 2.522 <p class=atrisk> 2.523 - The <dfn method for=Document>elementsFromPoint(<var>x</var>, <var>y</var>)</dfn> method must follow these steps: 2.524 + The <dfn method for=Document>elementsFromPoint(<var>x</var>, <var>y</var>)</dfn> method must follow these steps: 2.525 2.526 1. Let <var>sequence</var> be a new empty sequence. 2.527 1. If either argument is negative, <var>x</var> is greater than the <a>viewport</a> width excluding the size of a rendered scroll bar (if any), or 2.528 - <var>y</var> is greater than the <a>viewport</a> height excluding the size of a rendered scroll bar (if any), or there is no <a>viewport</a> 2.529 - associated with the document, return <var>sequence</var> and terminate these steps. 2.530 + <var>y</var> is greater than the <a>viewport</a> height excluding the size of a rendered scroll bar (if any), or there is no <a>viewport</a> 2.531 + associated with the document, return <var>sequence</var> and terminate these steps. 2.532 1. For each <a>layout box</a> in the <a>viewport</a>, in paint order, starting with the topmost box, that would be a target for hit testing at 2.533 - coordinates <var>x</var>,<var>y</var> even if nothing would be overlapping it, when applying the <a>transforms</a> that apply to the descendants of the 2.534 - <a>viewport</a>, append the associated element to <var>sequence</var>. 2.535 + coordinates <var>x</var>,<var>y</var> even if nothing would be overlapping it, when applying the <a>transforms</a> that apply to the descendants of the 2.536 + <a>viewport</a>, append the associated element to <var>sequence</var>. 2.537 1. If the document has a root element, and the last item in <var>sequence</var> is not the root element, append the root element to <var>sequence</var>. 2.538 1. Return <var>sequence</var>. 2.539 2.540 @@ -874,44 +887,44 @@ 2.541 2.542 1. If there is no <a>viewport</a> associated with the document, return null. 2.543 1. If either argument is negative, <var>x</var> is greater 2.544 - than the <a>viewport</a> width excluding the size of a rendered 2.545 - scroll bar (if any), <var>y</var> is greather than the 2.546 - <a>viewport</a> height excluding the size of a rendered scroll bar 2.547 - (if any) return null. 2.548 + than the <a>viewport</a> width excluding the size of a rendered 2.549 + scroll bar (if any), <var>y</var> is greather than the 2.550 + <a>viewport</a> height excluding the size of a rendered scroll bar 2.551 + (if any) return null. 2.552 1. If at the coordinates <var>x</var>,<var>y</var> 2.553 - in the <a>viewport</a> no text insertion point indicator would have 2.554 - been inserted when applying the <a>transforms</a> that apply to the descendants of the <a>viewport</a>, return null. 2.555 + in the <a>viewport</a> no text insertion point indicator would have 2.556 + been inserted when applying the <a>transforms</a> that apply to the descendants of the <a>viewport</a>, return null. 2.557 1. If at the coordinates <var>x</var>,<var>y</var> 2.558 - in the <a>viewport</a> a text insertion point indicator would have 2.559 - been inserted in a text entry widget which is also a replaced element, when applying the <a>transforms</a> that apply to the descendants of the 2.560 - <a>viewport</a>, return a <a>caret position</a> with its properties set as follows: 2.561 + in the <a>viewport</a> a text insertion point indicator would have 2.562 + been inserted in a text entry widget which is also a replaced element, when applying the <a>transforms</a> that apply to the descendants of the 2.563 + <a>viewport</a>, return a <a>caret position</a> with its properties set as follows: 2.564 2.565 - <dl> 2.566 - <dt><a>caret node</a> 2.567 - <dd>The node corresponding to the text entry widget. 2.568 + <dl> 2.569 + <dt><a>caret node</a> 2.570 + <dd>The node corresponding to the text entry widget. 2.571 2.572 - <dt><a>caret offset</a> 2.573 - <dd>The amount of 16-bit units to the left of where the 2.574 - text insertion point indicator would have inserted. 2.575 + <dt><a>caret offset</a> 2.576 + <dd>The amount of 16-bit units to the left of where the 2.577 + text insertion point indicator would have inserted. 2.578 2.579 - <dt><a>caret range</a> 2.580 - <dd>null 2.581 - </dl> 2.582 + <dt><a>caret range</a> 2.583 + <dd>null 2.584 + </dl> 2.585 1. Otherwise, return a <a>caret position</a> where the 2.586 - <a>caret range</a> is a collapsed 2.587 - {{Range}} object for the position 2.588 - where the text insertion point indicator would have been inserted when applying the <a>transforms</a> that apply to the descendants of the 2.589 - <a>viewport</a>, and the other properties are set as follows: 2.590 + <a>caret range</a> is a collapsed 2.591 + {{Range}} object for the position 2.592 + where the text insertion point indicator would have been inserted when applying the <a>transforms</a> that apply to the descendants of the 2.593 + <a>viewport</a>, and the other properties are set as follows: 2.594 2.595 - <dl> 2.596 - <dt><a>caret node</a> 2.597 - <dd>The {{Range/startContainer}} 2.598 - of the <a>caret range</a>. 2.599 + <dl> 2.600 + <dt><a>caret node</a> 2.601 + <dd>The {{Range/startContainer}} 2.602 + of the <a>caret range</a>. 2.603 2.604 - <dt><a>caret offset</a> 2.605 - <dd>The {{Range/startOffset}} of 2.606 - the <a>caret range</a>. 2.607 - </dl> 2.608 + <dt><a>caret offset</a> 2.609 + <dd>The {{Range/startOffset}} of 2.610 + the <a>caret range</a>. 2.611 + </dl> 2.612 2.613 Note: The specifics of hit testing are out of scope of this 2.614 specification and therefore the exact details of 2.615 @@ -922,7 +935,7 @@ 2.616 <p class=atrisk>The <dfn attribute for=Document>scrollingElement</dfn> attribute, on getting, must run these steps: 2.617 2.618 1. If the {{Document}} is in <a>quirks mode</a>, follow these substeps: 2.619 - 1. If <a>the HTML <code>body</code> element</a> exists, return <a>the HTML <code>body</code> element</a> and abort these steps. 2.620 + 1. If <a>the HTML <code>body</code> element</a> exists, and it is not <a>potentially scrollable</a>, return <a>the HTML <code>body</code> element</a> and abort these steps. 2.621 1. Return null and abort these steps. 2.622 1. If there is a root element, return the root element and abort these steps. 2.623 1. Return null. 2.624 @@ -959,14 +972,14 @@ 2.625 aborting on the first step that returns a value: 2.626 2.627 1. If <a>caret range</a> is not null: 2.628 - 1. Let <var>list</var> be the result of invoking the {{Range/getClientRects()}} method on the range. 2.629 - 1. If <var>list</var> is empty, return null. 2.630 - 1. Return the {{DOMRect}} object in <var>list</var> at index 0. 2.631 + 1. Let <var>list</var> be the result of invoking the {{Range/getClientRects()}} method on the range. 2.632 + 1. If <var>list</var> is empty, return null. 2.633 + 1. Return the {{DOMRect}} object in <var>list</var> at index 0. 2.634 1. If <a>caret node</a> is a text entry widget that is a replaced element, 2.635 - and that is in the document, 2.636 - return a {{DOMRect}} object for the caret in the widget 2.637 - as represented by the <a>caret offset</a> value. 2.638 - The <a>transforms</a> that apply to the element and its ancestors are applied. 2.639 + and that is in the document, 2.640 + return a {{DOMRect}} object for the caret in the widget 2.641 + as represented by the <a>caret offset</a> value. 2.642 + The <a>transforms</a> that apply to the element and its ancestors are applied. 2.643 1. Return null. 2.644 2.645 Extensions to the {{Element}} Interface {#extension-to-the-element-interface} 2.646 @@ -1006,28 +1019,28 @@ 2.647 1. If the element has an associated <a>SVG layout box</a> return a {{DOMRectList}} object containing a single {{DOMRect}} object that describes the bounding box of the element as defined by the SVG specification, applying the <a>transforms</a> that apply to the element and its ancestors. 2.648 1. Return a {{DOMRectList}} object containing a list of {{DOMRect}} objects in content order describing the bounding border boxes (including those with a height or width of zero) with the following constraints: 2.649 2.650 - * Apply the <a>transforms</a> that apply to the element and its ancestors. 2.651 - * If the element on which the method was invoked has a computed value for the 'display' property of ''table'' or ''inline-table'' include both the table box and the caption box, if any, but not the anonymous container box. 2.652 - * Replace each <a>anonymous block box</a> with its child box(es) and repeat this until no anonymous block boxes are left in the final list. 2.653 + * Apply the <a>transforms</a> that apply to the element and its ancestors. 2.654 + * If the element on which the method was invoked has a computed value for the 'display' property of ''table'' or ''inline-table'' include both the table box and the caption box, if any, but not the anonymous container box. 2.655 + * Replace each <a>anonymous block box</a> with its child box(es) and repeat this until no anonymous block boxes are left in the final list. 2.656 2.657 The <dfn method for=Element>getBoundingClientRect()</dfn> method, when invoked, must return the result of the following 2.658 algorithm: 2.659 2.660 1. Let <var>list</var> be the result of invoking {{Element/getClientRects()}} on the same element this method was invoked on. 2.661 1. If the <var>list</var> is empty return a {{DOMRect}} object 2.662 - whose {{DOMRect/x}}, {{DOMRect/y}}, {{DOMRect/width}} and {{DOMRect/height}} members are zero. 2.663 + whose {{DOMRect/x}}, {{DOMRect/y}}, {{DOMRect/width}} and {{DOMRect/height}} members are zero. 2.664 1. Otherwise, return a {{DOMRect}} object describing the smallest rectangle 2.665 - that includes the first rectangle in <var>list</var> 2.666 - and all of the remaining rectangles of which the height or width is not zero. 2.667 + that includes the first rectangle in <var>list</var> 2.668 + and all of the remaining rectangles of which the height or width is not zero. 2.669 2.670 <div class='example'> 2.671 - The following snippet gets the dimensions of the first <code>div</code> element in a document: 2.672 + The following snippet gets the dimensions of the first <code>div</code> element in a document: 2.673 2.674 - <pre class='lang-javascript'> 2.675 - var example = document.getElementsByTagName("div")[0].getBoundingClientRect(); 2.676 - var exampleWidth = example.width; 2.677 - var exampleHeight = example.height; 2.678 - </pre> 2.679 + <pre class='lang-javascript'> 2.680 + var example = document.getElementsByTagName("div")[0].getBoundingClientRect(); 2.681 + var exampleWidth = example.width; 2.682 + var exampleHeight = example.height; 2.683 + </pre> 2.684 </div> 2.685 2.686 The <dfn method for=Element>scrollIntoView(<var>arg</var>)</dfn> method must run these steps: 2.687 @@ -1040,37 +1053,37 @@ 2.688 1. If <var>arg</var> is false, let the {{ScrollIntoViewOptions/block}} dictionary member of <var>options</var> have the value "<code>end</code>". 2.689 1. If the element does not have any associated <a>layout box</a> terminate these steps. 2.690 1. <a lt='scroll an element into view'>Scroll the element into view</a> 2.691 - with the <i>align to top</i> flag set if <var>options</var> {{ScrollIntoViewOptions/block}} dictionary member has the value "<code>start</code>", 2.692 - and the scroll behavior being the value of the {{ScrollOptions/behavior}} dictionary member of <var>options</var>. 2.693 + with the <i>align to top</i> flag set if <var>options</var> {{ScrollIntoViewOptions/block}} dictionary member has the value "<code>start</code>", 2.694 + and the scroll behavior being the value of the {{ScrollOptions/behavior}} dictionary member of <var>options</var>. 2.695 1. Optionally perform some other action that brings the element to the user's attention. 2.696 2.697 The <dfn method for=Element lt="scroll(options)|scroll(x, y)">scroll()</dfn> method must run these steps: 2.698 2.699 1. If invoked with one argument, follow these substeps: 2.700 - 1. Let <var>options</var> be the argument. 2.701 - 1. <a>Normalize non-finite values</a> for {{ScrollToOptions/left}} and {{ScrollToOptions/top}} dictionary members of <var>options</var>, if present. 2.702 - 1. Let <var>x</var> be the value of the {{ScrollToOptions/left}} dictionary member of <var>options</var>, if present, or the element's current scroll position on the x axis otherwise. 2.703 - 1. Let <var>y</var> be the value of the {{ScrollToOptions/top}} dictionary member of <var>options</var>, if present, or the element's current scroll position on the y axis otherwise. 2.704 + 1. Let <var>options</var> be the argument. 2.705 + 1. <a>Normalize non-finite values</a> for {{ScrollToOptions/left}} and {{ScrollToOptions/top}} dictionary members of <var>options</var>, if present. 2.706 + 1. Let <var>x</var> be the value of the {{ScrollToOptions/left}} dictionary member of <var>options</var>, if present, or the element's current scroll position on the x axis otherwise. 2.707 + 1. Let <var>y</var> be the value of the {{ScrollToOptions/top}} dictionary member of <var>options</var>, if present, or the element's current scroll position on the y axis otherwise. 2.708 1. If invoked with two arguments, follow these substeps: 2.709 - 1. Let <var>options</var> be null <a lt="converted to an IDL value">converted</a> to a {{ScrollToOptions}} dictionary. [[!WEBIDL]] 2.710 - 1. Let <var>x</var> and <var>y</var> be the arguments, respectively. 2.711 - 1. <a>Normalize non-finite values</a> for <var>x</var> and <var>y</var>. 2.712 - 1. Let the {{ScrollToOptions/left}} dictionary member of <var>options</var> have the value <var>x</var>. 2.713 - 1. Let the {{ScrollToOptions/top}} dictionary member of <var>options</var> have the value <var>y</var>. 2.714 + 1. Let <var>options</var> be null <a lt="converted to an IDL value">converted</a> to a {{ScrollToOptions}} dictionary. [[!WEBIDL]] 2.715 + 1. Let <var>x</var> and <var>y</var> be the arguments, respectively. 2.716 + 1. <a>Normalize non-finite values</a> for <var>x</var> and <var>y</var>. 2.717 + 1. Let the {{ScrollToOptions/left}} dictionary member of <var>options</var> have the value <var>x</var>. 2.718 + 1. Let the {{ScrollToOptions/top}} dictionary member of <var>options</var> have the value <var>y</var>. 2.719 1. If the element is the root element and the {{Document}} is in <a>quirks mode</a>, terminate these steps. 2.720 1. If the element is the root element invoke {{Window/scroll()}} with {{Window/scrollX}} as first argument and <var>y</var> as second argument, 2.721 - and terminate these steps. 2.722 + and terminate these steps. 2.723 1. If the element is <a>the HTML <code>body</code> element</a>, 2.724 - the {{Document}} is in <a>quirks mode</a>, 2.725 - and the element does not have an associated <a>scrolling box</a>, 2.726 - invoke {{Window/scroll()}} with <var>options</var> as the only argument, 2.727 - and terminate these steps. 2.728 + the {{Document}} is in <a>quirks mode</a>, 2.729 + and the element is not <a>potentially scrollable</a>, 2.730 + invoke {{Window/scroll()}} with <var>options</var> as the only argument, 2.731 + and terminate these steps. 2.732 1. If the element does not have any associated <a>CSS layout box</a>, 2.733 - the element has no associated <a>scrolling box</a>, 2.734 - or the element has no overflow, 2.735 - terminate these steps. 2.736 + the element has no associated <a>scrolling box</a>, 2.737 + or the element has no overflow, 2.738 + terminate these steps. 2.739 1. <a lt='scroll an element'>Scroll the element</a> to <var>x</var>,<var>y</var>, 2.740 - with the scroll behavior being the value of the {{ScrollOptions/behavior}} dictionary member of <var>options</var>. 2.741 + with the scroll behavior being the value of the {{ScrollOptions/behavior}} dictionary member of <var>options</var>. 2.742 2.743 When the <dfn method for=Element lt="scrollTo(options)|scrollTo(x, y)">scrollTo()</dfn> method is invoked, the 2.744 user agent must act as if the {{Element/scroll()}} method was invoked with the same arguments. 2.745 @@ -1079,14 +1092,14 @@ 2.746 user agent must run these steps: 2.747 2.748 1. If invoked with one argument, follow these substeps: 2.749 - 1. Let <var>options</var> be the argument. 2.750 - 1. <a>Normalize non-finite values</a> for {{ScrollToOptions/left}} and {{ScrollToOptions/top}} dictionary members of <var>options</var>, if present. 2.751 + 1. Let <var>options</var> be the argument. 2.752 + 1. <a>Normalize non-finite values</a> for {{ScrollToOptions/left}} and {{ScrollToOptions/top}} dictionary members of <var>options</var>, if present. 2.753 1. If invoked with two arguments, follow these substeps: 2.754 - 1. Let <var>options</var> be null <a lt="converted to an IDL value">converted</a> to a {{ScrollToOptions}} dictionary. [[!WEBIDL]] 2.755 - 1. Let <var>x</var> and <var>y</var> be the arguments, respectively. 2.756 - 1. <a>Normalize non-finite values</a> for <var>x</var> and <var>y</var>. 2.757 - 1. Let the {{ScrollToOptions/left}} dictionary member of <var>options</var> have the value <var>x</var>. 2.758 - 1. Let the {{ScrollToOptions/top}} dictionary member of <var>options</var> have the value <var>y</var>. 2.759 + 1. Let <var>options</var> be null <a lt="converted to an IDL value">converted</a> to a {{ScrollToOptions}} dictionary. [[!WEBIDL]] 2.760 + 1. Let <var>x</var> and <var>y</var> be the arguments, respectively. 2.761 + 1. <a>Normalize non-finite values</a> for <var>x</var> and <var>y</var>. 2.762 + 1. Let the {{ScrollToOptions/left}} dictionary member of <var>options</var> have the value <var>x</var>. 2.763 + 1. Let the {{ScrollToOptions/top}} dictionary member of <var>options</var> have the value <var>y</var>. 2.764 1. Add the value of {{Element/scrollLeft}} to the {{ScrollToOptions/left}} dictionary member. 2.765 1. Add the value of {{Element/scrollTop}} to the {{ScrollToOptions/top}} dictionary member. 2.766 1. Act as if the {{Element/scroll()}} method was invoked with <var>options</var> as the only argument. 2.767 @@ -1095,7 +1108,7 @@ 2.768 2.769 1. If the element is the root element and the {{Document}} is in <a>quirks mode</a>, return zero and terminate these steps. 2.770 1. If the element is the root element return the value of {{Window/scrollY}}. 2.771 -1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a>, and the element does not have an associated <a>scrolling box</a>, return the value of {{Window/scrollY}}. 2.772 +1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a>, and the element is not <a>potentially scrollable</a>, return the value of {{Window/scrollY}}. 2.773 1. If the element does not have any associated <a>CSS layout box</a>, return zero and terminate these steps. 2.774 1. Return the y-coordinate of the <a>scrolling area</a> at the alignment point with the top of the <a>padding edge</a> of the element. 2.775 2.776 @@ -1105,7 +1118,7 @@ 2.777 1. <a>Normalize non-finite values</a> for <var>y</var>. 2.778 1. If the element is the root element and the {{Document}} is in <a>quirks mode</a>, terminate these steps. 2.779 1. If the element is the root element invoke {{Window/scroll()}} with {{Window/scrollX}} as first argument and <var>y</var> as second argument, and terminate these steps. 2.780 -1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a>, and the element does not have an associated <a>scrolling box</a>, invoke {{Window/scroll()}} with {{Window/scrollX}} as first argument and <var>y</var> as second argument, and terminate these steps. 2.781 +1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a>, and the element is not <a>potentially scrollable</a>, invoke {{Window/scroll()}} with {{Window/scrollX}} as first argument and <var>y</var> as second argument, and terminate these steps. 2.782 1. If the element does not have any associated <a>CSS layout box</a>, the element has no associated <a>scrolling box</a>, or the element has no overflow, terminate these steps. 2.783 1. <a lt='scroll an element'>Scroll the element</a> to {{Element/scrollLeft}},<var>y</var>, with the scroll behavior being <code>"auto"</code>. 2.784 2.785 @@ -1113,7 +1126,7 @@ 2.786 2.787 1. If the element is the root element and the {{Document}} is in <a>quirks mode</a>, return zero and terminate these steps. 2.788 1. If the element is the root element return the value of {{Window/scrollX}}. 2.789 -1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a>, and the element does not have an associated <a>scrolling box</a>, return the value of {{Window/scrollX}}. 2.790 +1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a>, and the element is not <a>potentially scrollable</a>, return the value of {{Window/scrollX}}. 2.791 1. If the element does not have any associated <a>CSS layout box</a>, return zero and terminate these steps. 2.792 1. Return the x-coordinate of the <a>scrolling area</a> at the alignment point with the left of the <a>padding edge</a> of the element. 2.793 2.794 @@ -1123,7 +1136,7 @@ 2.795 1. <a>Normalize non-finite values</a> for <var>x</var>. 2.796 1. If the element is the root element and the {{Document}} is in <a>quirks mode</a>, terminate these steps. 2.797 1. If the element is the root element invoke {{Window/scroll()}} with <var>x</var> as first argument and {{Window/scrollY}} as second argument, and terminate these steps. 2.798 -1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a>, and the element does not have an associated <a>scrolling box</a>, invoke {{Window/scroll()}} with <var>x</var> as first argument and {{Window/scrollY}} as second argument, and terminate these steps. 2.799 +1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a>, and the element is not <a>potentially scrollable</a>, invoke {{Window/scroll()}} with <var>x</var> as first argument and {{Window/scrollY}} as second argument, and terminate these steps. 2.800 1. If the element does not have any associated <a>CSS layout box</a>, the element has no associated <a>scrolling box</a>, or the element has no overflow, terminate these steps. 2.801 1. <a lt='scroll an element'>Scroll the element</a> to <var>x</var>,{{Element/scrollTop}}, with the scroll behavior being <code>"auto"</code>. 2.802 2.803 @@ -1131,7 +1144,7 @@ 2.804 2.805 1. Let <var>viewport width</var> be the width of the <a>viewport</a> excluding the width of the scroll bar, if any, or zero if there is no <a>viewport</a>. 2.806 1. If the element is the root element and the {{Document}} is not in <a>quirks mode</a> return max(<a>viewport</a> <a>scrolling area</a> width, <var>viewport width</var>). 2.807 -1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a> and the element has no associated <a>scrolling box</a>, return max(<a>viewport</a> <a>scrolling area</a> width, <var>viewport width</var>). 2.808 +1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a> and the element is not <a>potentially scrollable</a>, return max(<a>viewport</a> <a>scrolling area</a> width, <var>viewport width</var>). 2.809 1. If the element does not have any associated <a>CSS layout box</a> return zero and terminate these steps. 2.810 1. Return the width of the element's <a>scrolling area</a>. 2.811 2.812 @@ -1139,7 +1152,7 @@ 2.813 2.814 1. Let <var>viewport height</var> be the height of the <a>viewport</a> excluding the height of the scroll bar, if any, or zero if there is no <a>viewport</a>. 2.815 1. If the element is the root element and the {{Document}} is not in <a>quirks mode</a> return max(<a>viewport</a> <a>scrolling area</a> height, <var>viewport height</var>). 2.816 -1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a> and the element has no associated <a>scrolling box</a>, return max(<a>viewport</a> <a>scrolling area</a> height, <var>viewport height</var>). 2.817 +1. If the element is <a>the HTML <code>body</code> element</a>, the {{Document}} is in <a>quirks mode</a> and the element is not <a>potentially scrollable</a>, return max(<a>viewport</a> <a>scrolling area</a> height, <var>viewport height</var>). 2.818 1. If the element does not have any associated <a>CSS layout box</a> return zero and terminate these steps. 2.819 1. Return the height of the element's <a>scrolling area</a>. 2.820 2.821 @@ -1191,32 +1204,32 @@ 2.822 1. Let <var>scrolling box width</var> be the distance between <var>scrolling box edge C</var> and <var>scrolling box edge D</var>. 2.823 1. Let <var>position</var> be the scroll position <var>scrolling box</var> would have by following these steps: 2.824 2.825 - 1. If the <i>align to top flag</i> is set align <var>element edge A</var> with <var>scrolling box edge A</var>. 2.826 - 1. Otherwise, the <i>align to top flag</i> is not set; align <var>element edge B</var> with <var>scrolling box edge B</var>. 2.827 - 1. <dl class=switch> 2.828 - <dt>If <var>element edge C</var> and <var>element edge D</var> are both outside <var>scrolling box edge C</var> and <var>scrolling box edge D</var> 2.829 - <dd>Do nothing. 2.830 + 1. If the <i>align to top flag</i> is set align <var>element edge A</var> with <var>scrolling box edge A</var>. 2.831 + 1. Otherwise, the <i>align to top flag</i> is not set; align <var>element edge B</var> with <var>scrolling box edge B</var>. 2.832 + 1. <dl class=switch> 2.833 + <dt>If <var>element edge C</var> and <var>element edge D</var> are both outside <var>scrolling box edge C</var> and <var>scrolling box edge D</var> 2.834 + <dd>Do nothing. 2.835 2.836 - <dt>If <var>element edge C</var> is outside <var>scrolling box edge C</var> and <var>element width</var> is less than <var>scrolling box width</var> 2.837 - <dt>If <var>element edge D</var> is outside <var>scrolling box edge D</var> and <var>element width</var> is greater than <var>scrolling box width</var> 2.838 - <dd>Align <var>element edge C</var> with <var>scrolling box edge C</var>. 2.839 + <dt>If <var>element edge C</var> is outside <var>scrolling box edge C</var> and <var>element width</var> is less than <var>scrolling box width</var> 2.840 + <dt>If <var>element edge D</var> is outside <var>scrolling box edge D</var> and <var>element width</var> is greater than <var>scrolling box width</var> 2.841 + <dd>Align <var>element edge C</var> with <var>scrolling box edge C</var>. 2.842 2.843 - <dt>If <var>element edge C</var> is outside <var>scrolling box edge C</var> and <var>element width</var> is greater than <var>scrolling box width</var> 2.844 - <dt>If <var>element edge D</var> is outside <var>scrolling box edge D</var> and <var>element width</var> is less than <var>scrolling box width</var> 2.845 - <dd>Align <var>element edge D</var> with <var>scrolling box edge D</var>. 2.846 - </dl> 2.847 + <dt>If <var>element edge C</var> is outside <var>scrolling box edge C</var> and <var>element width</var> is greater than <var>scrolling box width</var> 2.848 + <dt>If <var>element edge D</var> is outside <var>scrolling box edge D</var> and <var>element width</var> is less than <var>scrolling box width</var> 2.849 + <dd>Align <var>element edge D</var> with <var>scrolling box edge D</var>. 2.850 + </dl> 2.851 2.852 1. If <var>position</var> is the same as <var>scrolling box</var>'s current scroll position, and <var>scrolling box</var> does not have an ongoing <a>smooth scroll</a>, abort these steps. 2.853 1. <dl class=switch> 2.854 - <dt>If <var>scrolling box</var> is associated with an element 2.855 - <dd> 2.856 - Let <var>associated element</var> be the element. 2.857 + <dt>If <var>scrolling box</var> is associated with an element 2.858 + <dd> 2.859 + Let <var>associated element</var> be the element. 2.860 2.861 - <dt>If <var>scrolling box</var> is associated with a <a>viewport</a> 2.862 - <dd> 2.863 - Let <var>document</var> be the <a>viewportâs</a> associated {{Document}}. 2.864 - Let <var>associated element</var> be <var>document</var>'s root element, if there is one, or null otherwise. 2.865 - </dl> 2.866 + <dt>If <var>scrolling box</var> is associated with a <a>viewport</a> 2.867 + <dd> 2.868 + Let <var>document</var> be the <a>viewportâs</a> associated {{Document}}. 2.869 + Let <var>associated element</var> be <var>document</var>'s root element, if there is one, or null otherwise. 2.870 + </dl> 2.871 1. <a>Perform a scroll</a> of <var>scrolling box</var> to <var>position</var>, <var>associated element</var> as the associated element and <var>behavior</var> as the scroll behavior. 2.872 2.873 2.874 @@ -1224,19 +1237,19 @@ 2.875 2.876 1. Let <var>box</var> be <var>element</var>'s associated <a>scrolling box</a>. 2.877 1. <dl class=switch> 2.878 - <dt>If <var>box</var> has rightward <a>overflow direction</a> 2.879 - <dd>Let <var>x</var> be max(0, min(<var>x</var>, <var>element</var> <a>scrolling area</a> width - <var>element</var> <a>padding edge</a> width)). 2.880 + <dt>If <var>box</var> has rightward <a>overflow direction</a> 2.881 + <dd>Let <var>x</var> be max(0, min(<var>x</var>, <var>element</var> <a>scrolling area</a> width - <var>element</var> <a>padding edge</a> width)). 2.882 2.883 - <dt>If <var>box</var> has leftward <a>overflow direction</a> 2.884 - <dd>Let <var>x</var> be min(0, max(<var>x</var>, <var>element</var> <a>padding edge</a> width - <var>element</var> <a>scrolling area</a> width)). 2.885 - </dl> 2.886 + <dt>If <var>box</var> has leftward <a>overflow direction</a> 2.887 + <dd>Let <var>x</var> be min(0, max(<var>x</var>, <var>element</var> <a>padding edge</a> width - <var>element</var> <a>scrolling area</a> width)). 2.888 + </dl> 2.889 1. <dl class=switch> 2.890 - <dt>If <var>box</var> has downward <a>overflow direction</a> 2.891 - <dd>Let <var>y</var> be max(0, min(<var>y</var>, <var>element</var> <a>scrolling area</a> height - <var>element</var> <a>padding edge</a> height)). 2.892 + <dt>If <var>box</var> has downward <a>overflow direction</a> 2.893 + <dd>Let <var>y</var> be max(0, min(<var>y</var>, <var>element</var> <a>scrolling area</a> height - <var>element</var> <a>padding edge</a> height)). 2.894 2.895 - <dt>If <var>box</var> has upward <a>overflow direction</a> 2.896 - <dd>Let <var>y</var> be min(0, max(<var>y</var>, <var>element</var> <a>padding edge</a> height - <var>element</var> <a>scrolling area</a> height)). 2.897 - </dl> 2.898 + <dt>If <var>box</var> has upward <a>overflow direction</a> 2.899 + <dd>Let <var>y</var> be min(0, max(<var>y</var>, <var>element</var> <a>padding edge</a> height - <var>element</var> <a>scrolling area</a> height)). 2.900 + </dl> 2.901 1. Let <var>position</var> be the scroll position <var>box</var> would have by aligning <a>scrolling area</a> x-coordinate <var>x</var> with the left of <var>box</var> and aligning <a>scrolling area</a> y-coordinate <var>y</var> with the top of <var>box</var>. 2.902 1. If <var>position</var> is the same as <var>box</var>'s current scroll position, and <var>box</var> does not have an ongoing <a>smooth scroll</a>, abort these steps. 2.903 1. <a>Perform a scroll</a> of <var>box</var> to <var>position</var>, <var>element</var> as the associated element and <var>behavior</var> as the scroll behavior. 2.904 @@ -1259,14 +1272,14 @@ 2.905 The <dfn attribute for=HTMLElement>offsetParent</dfn> attribute must return the result of running these steps: 2.906 2.907 1. If any of the following holds true return null and terminate this algorithm: 2.908 - * The element does not have an associated <a>CSS layout box</a>. 2.909 - * The element is the root element. 2.910 - * The element is <a>the HTML <code>body</code> element</a>. 2.911 - * The element's computed value of the 'position' property is ''position/fixed''. 2.912 + * The element does not have an associated <a>CSS layout box</a>. 2.913 + * The element is the root element. 2.914 + * The element is <a>the HTML <code>body</code> element</a>. 2.915 + * The element's computed value of the 'position' property is ''position/fixed''. 2.916 1. Return the nearest ancestor element of the element for which at least one of the following is true and terminate this algorithm if such an ancestor is found: 2.917 - * The computed value of the 'position' property is not ''static''. 2.918 - * It is <a>the HTML <code>body</code> element</a>. 2.919 - * The computed value of the 'position' property of the element is ''static'' and the ancestor is one of the following <a>HTML elements</a>: <code>td</code>, <code>th</code>, or <code>table</code>. 2.920 + * The computed value of the 'position' property is not ''static''. 2.921 + * It is <a>the HTML <code>body</code> element</a>. 2.922 + * The computed value of the 'position' property of the element is ''static'' and the ancestor is one of the following <a>HTML elements</a>: <code>td</code>, <code>th</code>, or <code>table</code>. 2.923 1. Return null. 2.924 2.925 The <dfn attribute for=HTMLElement>offsetTop</dfn> attribute must return the result of running these steps: 2.926 @@ -1274,13 +1287,13 @@ 2.927 1. If the element is <a>the HTML <code>body</code> element</a> or does not have any associated <a>CSS layout box</a> return zero and terminate this algorithm. 2.928 1. If the {{HTMLElement/offsetParent}} of the element is null return the y-coordinate of the top <a>border edge</a> of the first <a>CSS layout box</a> associated with the element, relative to the <a>initial containing block</a> origin, ignoring any <a>transforms</a> that apply to the element and its ancestors, and terminate this algorithm. 2.929 1. Return the result of subtracting the y-coordinate of the top <a>padding edge</a> 2.930 - of the first <a>CSS layout box</a> associated with the {{HTMLElement/offsetParent}} of the element 2.931 - from the y-coordinate of the top <a>border edge</a> 2.932 - of the first <a>CSS layout box</a> associated with the element, 2.933 - relative to the <a>initial containing block</a> origin, 2.934 - ignoring any <a>transforms</a> that apply to the element and its ancestors. 2.935 + of the first <a>CSS layout box</a> associated with the {{HTMLElement/offsetParent}} of the element 2.936 + from the y-coordinate of the top <a>border edge</a> 2.937 + of the first <a>CSS layout box</a> associated with the element, 2.938 + relative to the <a>initial containing block</a> origin, 2.939 + ignoring any <a>transforms</a> that apply to the element and its ancestors. 2.940 2.941 - Note: An inline element that consists of multiple line boxes will only have its first <a>CSS layout box</a> considered. 2.942 + Note: An inline element that consists of multiple line boxes will only have its first <a>CSS layout box</a> considered. 2.943 2.944 The <dfn attribute for=HTMLElement>offsetLeft</dfn> attribute must return the result of running these steps: 2.945 2.946 @@ -1504,12 +1517,12 @@ 2.947 When asked to <dfn>run the resize steps</dfn> for a {{Document}} <var>doc</var>, run these steps: 2.948 2.949 1. If <var>doc</var>'s <a>viewport</a> has had its width or height changed 2.950 - (e.g. as a result of the user resizing the browser window, 2.951 - or changing the <span>page zoom</span> scale factor, 2.952 - or an <code>iframe</code> element's dimensions are changed) 2.953 - since the last time these steps were run, 2.954 - <a>fire an event</a> named <code>resize</code> 2.955 - at the {{Window}} object associated with <var>doc</var>. 2.956 + (e.g. as a result of the user resizing the browser window, 2.957 + or changing the <span>page zoom</span> scale factor, 2.958 + or an <code>iframe</code> element's dimensions are changed) 2.959 + since the last time these steps were run, 2.960 + <a>fire an event</a> named <code>resize</code> 2.961 + at the {{Window}} object associated with <var>doc</var>. 2.962 2.963 2.964 Scrolling {#scrolling-events} 2.965 @@ -1532,10 +1545,10 @@ 2.966 When asked to <dfn>run the scroll steps</dfn> for a {{Document}} <var>doc</var>, run these steps: 2.967 2.968 1. For each item <var>target</var> in <var>doc</var>'s <a>pending scroll event targets</a>, 2.969 - in the order they were added to the list, run these substeps: 2.970 + in the order they were added to the list, run these substeps: 2.971 2.972 - 1. If <var>target</var> is a {{Document}}, <a>fire an event</a> named <code>scroll</code> that bubbles at <var>target</var>. 2.973 - 1. Otherwise, <a>fire an event</a> named <code>scroll</code> at <var>target</var>. 2.974 + 1. If <var>target</var> is a {{Document}}, <a>fire an event</a> named <code>scroll</code> that bubbles at <var>target</var>. 2.975 + 1. Otherwise, <a>fire an event</a> named <code>scroll</code> at <var>target</var>. 2.976 1. Empty <var>doc</var>'s <a>pending scroll event targets</a>. 2.977 2.978 2.979 @@ -1553,7 +1566,7 @@ 2.980 Initial: auto 2.981 Applies to: <a>scrolling boxes</a> 2.982 Inherited: no 2.983 -Computed value: specified value 2.984 +Computed value: specified value 2.985 Media: visual 2.986 Animatable: no 2.987 Canonical Order: per grammar
3.1 --- a/cssom/Overview.bs Tue Apr 14 15:30:21 2015 +0200 3.2 +++ b/cssom/Overview.bs Tue Apr 14 15:30:53 2015 +0200 3.3 @@ -11,6 +11,7 @@ 3.4 Editor: Simon Pieters, Opera Software ASA http://www.opera.com, [email protected] 3.5 Editor: Glenn Adams, Cox Communications, Inc. http://www.cox.com, [email protected], http://www.w3.org/wiki/User:Gadams 3.6 Former Editor: Anne van Kesteren, Opera Software ASA http://www.opera.com, [email protected], https://annevankesteren.nl/ 3.7 +!Issues list: <a href="https://www.w3.org/Bugs/Public/buglist.cgi?product=CSS&component=CSSOM&resolution=---">Bugzilla</a> (<a href="https://www.w3.org/Bugs/Public/enter_bug.cgi?product=CSS&component=CSSOM">file a bug</a>) 3.8 Abstract: CSSOM defines APIs (including generic parsing and serialization rules) for Media Queries, Selectors, and of course CSS itself. 3.9 Ignored Terms: EmptyString, mediaText, cssText, InvalidCharacterError, SecurityError, SyntaxError, IndexSizeError, HierarchyRequestError, InvalidStateError, InvalidModificationError, NoModificationAllowedError, CORS-same-origin, group of selectors, list of css page selectors, CSSCharsetRule 3.10 </pre> 3.11 @@ -116,6 +117,8 @@ 3.12 spec:html5; type:element; text:style 3.13 </pre> 3.14 3.15 +<script src=https://resources.whatwg.org/file-bug.js async></script> 3.16 + 3.17 Introduction {#introduction} 3.18 ============================ 3.19