- From: poot <cvsmail@w3.org>
- Date: Fri, 29 Jan 2010 10:32:05 +0900 (JST)
- To: public-html-diffs@w3.org
hixie: Make history traversal unrelated to history truncation always async. Make popstate/hashchange async. Add context information to hashchange. (whatwg r4632) http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.3691&r2=1.3692&f=h http://html5.org/tools/web-apps-tracker?from=4631&to=4632 =================================================================== RCS file: /sources/public/html5/spec/Overview.html,v retrieving revision 1.3691 retrieving revision 1.3692 diff -u -d -r1.3691 -r1.3692 --- Overview.html 27 Jan 2010 23:06:57 -0000 1.3691 +++ Overview.html 29 Jan 2010 01:31:45 -0000 1.3692 @@ -262,7 +262,7 @@ <h1>HTML5</h1> <h2 class="no-num no-toc" id="a-vocabulary-and-associated-apis-for-html-and-xhtml">A vocabulary and associated APIs for HTML and XHTML</h2> - <h2 class="no-num no-toc" id="editor-s-draft-27-january-2010">Editor's Draft 27 January 2010</h2> + <h2 class="no-num no-toc" id="editor-s-draft-29-january-2010">Editor's Draft 29 January 2010</h2> <dl><dt>Latest Published Version:</dt> <dd><a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a></dd> <dt>Latest Editor's Draft:</dt> @@ -361,7 +361,7 @@ specification's progress along the W3C Recommendation track. - This specification is the 27 January 2010 Editor's Draft. + This specification is the 29 January 2010 Editor's Draft. </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- relationship to other work (required) --><p>This specification is part of <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/">a larger specification</a> being produced by the <a href="http://www.whatwg.org/">WHATWG</a>. <!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --> @@ -890,11 +890,10 @@ <ol> <li><a href="#the-session-history-of-browsing-contexts"><span class="secno">5.10.1 </span>The session history of browsing contexts</a></li> <li><a href="#the-history-interface"><span class="secno">5.10.2 </span>The <code>History</code> interface</a></li> - <li><a href="#activating-state-object-entries"><span class="secno">5.10.3 </span>Activating state object entries</a></li> - <li><a href="#the-location-interface"><span class="secno">5.10.4 </span>The <code>Location</code> interface</a> + <li><a href="#the-location-interface"><span class="secno">5.10.3 </span>The <code>Location</code> interface</a> <ol> - <li><a href="#security-3"><span class="secno">5.10.4.1 </span>Security</a></ol></li> - <li><a href="#history-notes"><span class="secno">5.10.5 </span>Implementation notes for session history</a></ol></li> + <li><a href="#security-3"><span class="secno">5.10.3.1 </span>Security</a></ol></li> + <li><a href="#history-notes"><span class="secno">5.10.4 </span>Implementation notes for session history</a></ol></li> <li><a href="#browsing-the-web"><span class="secno">5.11 </span>Browsing the Web</a> <ol> <li><a href="#navigating-across-documents"><span class="secno">5.11.1 </span>Navigating across documents</a></li> @@ -905,7 +904,9 @@ <li><a href="#read-plugin"><span class="secno">5.11.6 </span>Page load processing model for content that uses plugins</a></li> <li><a href="#read-ua-inline"><span class="secno">5.11.7 </span>Page load processing model for inline content that doesn't have a DOM</a></li> <li><a href="#scroll-to-fragid"><span class="secno">5.11.8 </span>Navigating to a fragment identifier</a></li> - <li><a href="#history-traversal"><span class="secno">5.11.9 </span>History traversal</a></li> + <li><a href="#history-traversal"><span class="secno">5.11.9 </span>History traversal</a> + <ol> + <li><a href="#event-definitions"><span class="secno">5.11.9.1 </span>Event definitions</a></ol></li> <li><a href="#unloading-documents"><span class="secno">5.11.10 </span>Unloading documents</a> <ol> <li><a href="#event-definition"><span class="secno">5.11.10.1 </span>Event definition</a></ol></li> @@ -8485,20 +8486,19 @@ </li> + <li><p>Remove any <a href="#concept-task" title="concept-task">tasks</a> queued by + the <a href="#history-traversal-task-source">history traversal task source</a>.</li> + <li>Remove any earlier entries that share the same <code>Document</code>.</li> - <li> - - <p>If <var title="">replace</var> is false, then add a new entry, - just before the last entry, and assocaite with the new entry the - text that was parsed by the previous parser associated with the - <code>Document</code> object, as well as the state of the document - at the start of these steps. (This allows the user to step - backwards in the session history to see the page before it was - blown away by the <code title="dom-document-open"><a href="#dom-document-open">document.open()</a></code> call.)</p> - - </li> + <li><p>If <var title="">replace</var> is false, then add a new + entry, just before the last entry, and associate with the new entry + the text that was parsed by the previous parser associated with the + <code>Document</code> object, as well as the state of the document + at the start of these steps. (This allows the user to step + backwards in the session history to see the page before it was + blown away by the <code title="dom-document-open"><a href="#dom-document-open">document.open()</a></code> call.)</li> <li><p>Finally, set the <a href="#insertion-point">insertion point</a> to point at just before the end of the <a href="#the-input-stream">input stream</a> (which at this @@ -17696,8 +17696,10 @@ its <code title="attr-object-type"><a href="#attr-object-type">type</a></code> attribute is set, changed, or removed: the user agent must <a href="#queue-a-task">queue a task</a> to run the following steps to (re)determine what the - <code><a href="#the-object-element">object</a></code> element represents:</p> - <!-- Changing the base URL doesn't trigger this. --> + <code><a href="#the-object-element">object</a></code> element represents. The <a href="#task-source">task source</a> + for this <a href="#concept-task" title="concept-task">task</a> is the <a href="#dom-manipulation-task-source">DOM + manipulation task source</a>.</p> <!-- Changing the base URL + doesn't trigger this. --> <ol><li> @@ -18048,10 +18050,7 @@ <a href="#fallback-content">fallback content</a>. If the element has an instantiated <a href="#plugin">plugin</a>, then unload it.</li> - </ol><p>The <a href="#task-source">task source</a> for the <a href="#concept-task" title="concept-task">task</a> above is the <a href="#dom-manipulation-task-source">DOM manipulation - task source</a>.</p> - - <p id="object-plugin">When the algorithm above instantiates a + </ol><p id="object-plugin">When the algorithm above instantiates a <a href="#plugin">plugin</a>, the user agent should pass the names and values of all the attributes on the element, and <!-- then a parameter named "PARAM" whose value is null, and then --> all the names and @@ -39714,6 +39713,15 @@ </dd> + <dt>The <dfn id="history-traversal-task-source">history traversal task source</dfn></dt> + + <dd> + + <p>This <a href="#task-source">task source</a> is used to queue calls to <code title="dom-history-back"><a href="#dom-history-back">history.back()</a></code> and similar + APIs.</p> + + </dd> + </dl></div><div class="impl"> <!-- SCRIPT EXEC --> @@ -40132,7 +40140,7 @@ <tr><td><dfn id="handler-window-onblur" title="handler-window-onblur"><code>onblur</code></dfn> <td> <code title="event-blur">blur</code> <tr><td><dfn id="handler-window-onerror" title="handler-window-onerror"><code>onerror</code></dfn> <td> <code title="event-error">error</code> <tr><td><dfn id="handler-window-onfocus" title="handler-window-onfocus"><code>onfocus</code></dfn> <td> <code title="event-focus">focus</code> - <tr><td><dfn id="handler-window-onhashchange" title="handler-window-onhashchange"><code>onhashchange</code></dfn> <td> <code title="event-hashchange">hashchange</code> <!-- new --> + <tr><td><dfn id="handler-window-onhashchange" title="handler-window-onhashchange"><code>onhashchange</code></dfn> <td> <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> <!-- new --> <tr><td><dfn id="handler-window-onload" title="handler-window-onload"><code>onload</code></dfn> <td> <code title="event-load">load</code> <!-- widely used --> <tr><td><dfn id="handler-window-onmessage" title="handler-window-onmessage"><code>onmessage</code></dfn> <td> <code title="event-message">message</code> <!-- new for postMessage --> <tr><td><dfn id="handler-window-onoffline" title="handler-window-onoffline"><code>onoffline</code></dfn> <td> <code title="event-offline"><a href="#event-offline">offline</a></code> <!-- new --> @@ -43400,14 +43408,26 @@ <p>The actual entries are not accessible from script.</p> - <p>The <dfn id="dom-history-go" title="dom-history-go"><code>go(<var title="">delta</var>)</code></dfn> method causes the UA to run the - following steps:</p> + <p>When the <dfn id="dom-history-go" title="dom-history-go"><code>go(<var title="">delta</var>)</code></dfn> method is invoked, if the + argument to the method was omitted or has the value zero, the user + agent must act as if the <code title="dom-location-reload"><a href="#dom-location-reload">location.reload()</a></code> method was + called instead. Otherwise, the user agent must <a href="#traverse-the-history-by-a-delta">traverse the + history by a delta</a> whose value is the value of the method's + argument.</p> - <ol><li><p>If the argument to the method was omitted or has the value - zero, then act as if the <code title="dom-location-reload"><a href="#dom-location-reload">location.reload()</a></code> method was - called instead, and abort these steps.</p> + <p>When the <dfn id="dom-history-back" title="dom-history-back"><code>back()</code></dfn> + method is invoked, the user agent must <a href="#traverse-the-history-by-a-delta">traverse the history by + a delta</a> −1.</p> - <li><p>Let <var title="">delta</var> be the argument to the + <p>When the <dfn id="dom-history-forward" title="dom-history-forward"><code>forward()</code></dfn>method is + invoked, the user agent must <a href="#traverse-the-history-by-a-delta">traverse the history by a + delta</a> +1.</p> + + <p>To <dfn id="traverse-the-history-by-a-delta">traverse the history by a delta</dfn> <var title="">delta</var>, the user agent must <a href="#queue-a-task">queue a task</a> + to run the following steps. The <a href="#task-source">task source</a> for the + queued task is the <a href="#history-traversal-task-source">history traversal task source</a>.</p> + + <ol><li><p>Let <var title="">delta</var> be the argument to the method.</li> <li><p>If the index of the <a href="#current-entry-of-the-joint-session-history">current entry of the joint session @@ -43423,24 +43443,17 @@ <a href="#browsing-context">browsing context</a> of the <var title="">specified entry</var>.</li> + <!-- XXX if going to another doc, try to unload the document here + (firing beforeunload, unload, pagehide) --> + <li><p><a href="#traverse-the-history">Traverse the history</a> of the <var title="">specified browsing context</var> to the <var title="">specified entry</var>.</p> </ol><p>When the user navigates through a <a href="#browsing-context">browsing context</a>, e.g. using a browser's back and forward buttons, the user agent must - translate this action into the equivalent invocations of the <code title="dom-history-go"><a href="#dom-history-go">history.go(<var title="">delta</var>)</a></code> - method on the various affected <code title="dom-window"><a href="#dom-window">window</a></code> objects.</p> - - <p>Some of the other members of the <code><a href="#history-0">History</a></code> interface - are defined in terms of the <code title="dom-history-go"><a href="#dom-history-go">go()</a></code> - method, as follows:</p> + <a href="#traverse-the-history-by-a-delta">traverse the history by a delta</a> equivalent to the + action specified by the user.</p> - <table><tr><th>Member</th> - <th>Definition</th> - <tr><td><dfn id="dom-history-back" title="dom-history-back"><code>back()</code></dfn></td> - <td>Must do the same as <code title="dom-history-go"><a href="#dom-history-go">go(-1)</a></code></td> - <tr><td><dfn id="dom-history-forward" title="dom-history-forward"><code>forward()</code></dfn></td> - <td>Must do the same as <code title="dom-history-go"><a href="#dom-history-go">go(1)</a></code></td> - </table><hr><p>The <dfn id="dom-history-pushstate" title="dom-history-pushState"><code>pushState(<var title="">data</var>, <var title="">title</var>, <var title="">url</var>)</code></dfn> method adds a state object entry to + <hr><p>The <dfn id="dom-history-pushstate" title="dom-history-pushState"><code>pushState(<var title="">data</var>, <var title="">title</var>, <var title="">url</var>)</code></dfn> method adds a state object entry to the history.</p> <p>The <dfn id="dom-history-replacestate" title="dom-history-replaceState"><code>replaceState(<var title="">data</var>, <var title="">title</var>, <var title="">url</var>)</code></dfn> method updates the state object, @@ -43472,12 +43485,12 @@ <li>If the <a href="#origin">origin</a> of the resulting <a href="#absolute-url">absolute URL</a> is not the same as the <a href="#origin">origin</a> of the - <a href="#entry-script">entry script</a>'s <code title="script's browsing - context"><a href="#script-s-browsing-context">browsing context, and either the <span title="url-path"><path></span> or <span title="url-query"><query></span> components of the two - <span title="URL">URLs</span> comparedi in the previous step - differ, raise a <code>SECURITY_ERR</code> exception and abort + <a href="#entry-script">entry script</a>'s <a href="#script-s-browsing-context" title="script's browsing + context">browsing context</a>, and either the <a href="#url-path" title="url-path"><path></a> or <a href="#url-query" title="url-query"><query></a> components of the two + <a href="#url" title="URL">URLs</a> comparedi in the previous step + differ, raise a <code><a href="#security_err">SECURITY_ERR</a></code> exception and abort these steps. (This prevents sandboxed content from spoofing other - pages on the same origin.)</a></code></li> + pages on the same origin.)</li> </ol><p>For the purposes of the comparisons in the above substeps, the <a href="#url-path" title="url-path"><path></a> and <a href="#url-query" title="url-query"><query></a> components can only be the @@ -43503,6 +43516,9 @@ </li> + <li><p>Remove any <a href="#concept-task" title="concept-task">tasks</a> queued + by the <a href="#history-traversal-task-source">history traversal task source</a>.</li> + <li><p>Add a state object entry to the session history, after the <a href="#current-entry">current entry</a>, with <var title="">cloned data</var> as the state object, the given <var title="">title</var> as the title, @@ -43532,7 +43548,7 @@ <p class="note">Since this is neither a <a href="#navigate" title="navigate">navigation</a> of the <a href="#browsing-context">browsing context</a> nor a <a href="#traverse-the-history" title="traverse the history">history - traversal</a>, it does not cause a <code title="event-hashchange">hashchange</code> event to be fired.</p> + traversal</a>, it does not cause a <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> event to be fired.</p> </li> @@ -43639,67 +43655,7 @@ State: <OUTPUT NAME=I>1</OUTPUT> <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()"> </FORM></pre> - </div><h4 id="activating-state-object-entries"><span class="secno">5.10.3 </span><dfn title="activate the state object">Activating state object entries</dfn></h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><div class="impl"> - - <p>When an entry in the session history is activated (which happens - during <a href="#traverse-the-history" title="traverse the history">session history - traversal</a>), the user agent must run the following steps:</p> - - <ol><!-- only called for the first entry of a Document set and for - state object entries, not for frag id change entries --><li><p>If the entry is a <a href="#state-object">state object</a> entry, let <var title="">state</var> be a <a href="#structured-clone">structured clone</a> of that - state object. Otherwise, let <var title="">state</var> be - null.</li> - - <li> - - <p>Run the appropriate steps according to the conditions - described:</p> - - <dl class="switch"><dt>If the <a href="#current-document-readiness">current document readiness</a> is set to the - string "complete"</dt> - - <dd><p>Synchronously fire a <dfn id="event-popstate" title="event-popstate"><code>popstate</code></dfn> event on the - <code><a href="#window">Window</a></code> object of the <code>Document</code>, using - the <code><a href="#popstateevent">PopStateEvent</a></code> interface, with the <code title="dom-PopStateEvent-state"><a href="#dom-popstateevent-state">state</a></code> attribute set to the - value of <var title="">state</var>. This event must bubble but - not be cancelable and has no default action.</dd> - - <dt>Otherwise</dt> - - <dd><p>Let the <code>Document</code>'s <dfn id="pending-state-object">pending state - object</dfn> be <var title="">state</var>. (If there was already - a <a href="#pending-state-object">pending state object</a>, the previous one is - discarded.)</p> - - <p class="note">The event will then be fired just after the <code title="event-load">load</code> event.</dd> - - </dl></li> - - </ol><p>The <a href="#pending-state-object">pending state object</a> must be initially null.</p> - - <hr></div><pre class="idl">interface <dfn id="popstateevent">PopStateEvent</dfn> : Event { - readonly attribute any <a href="#dom-popstateevent-state" title="dom-PopStateEvent-state">state</a>; - void <a href="#dom-popstateevent-initpopstateevent" title="dom-PopStateEvent-initPopStateEvent">initPopStateEvent</a>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in any stateArg); -};</pre><dl class="domintro"><dt><var title="">event</var> . <code title="dom-PopStateEvent-state"><a href="#dom-popstateevent-state">state</a></code></dt> - - <dd> - - <p>Returns the information that was provided to <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code> or <code title="dom-history-replaceState"><a href="#dom-history-replacestate">replaceState()</a></code>.</p> - - </dd> - - </dl><div class="impl"> - - <p>The <dfn id="dom-popstateevent-initpopstateevent" title="dom-PopStateEvent-initPopStateEvent"><code>initPopStateEvent()</code></dfn> - method must initialize the event in a manner analogous to the - similarly-named method in the DOM Events interfaces. <a href="#refsDOMEVENTS">[DOMEVENTS]</a></p> - - <p>The <dfn id="dom-popstateevent-state" title="dom-PopStateEvent-state"><code>state</code></dfn> - attribute represents the context information for the event, or null, - if the state represented is the initial state of the - <code>Document</code>.</p> - - </div><h4 id="the-location-interface"><span class="secno">5.10.4 </span>The <code><a href="#location">Location</a></code> interface</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><p>Each <code>Document</code> object in a <a href="#browsing-context">browsing + </div><h4 id="the-location-interface"><span class="secno">5.10.3 </span>The <code><a href="#location">Location</a></code> interface</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><p>Each <code>Document</code> object in a <a href="#browsing-context">browsing context</a>'s session history is associated with a unique instance of a <code><a href="#location">Location</a></code> object.<dl class="domintro"><dt><var title="">document</var> . <code title="dom-document-location"><a href="#dom-document-location">location</a></code> [ = <var title="">value</var> ]</dt> <dt><var title="">window</var> . <code title="dom-location"><a href="#dom-location">location</a></code> [ = <var title="">value</var> ]</dt> @@ -43890,7 +43846,7 @@ </div><div class="impl"> - <h5 id="security-3"><span class="secno">5.10.4.1 </span>Security</h5><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i></p> + <h5 id="security-3"><span class="secno">5.10.3.1 </span>Security</h5><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i></p> <p>User agents must raise a <code><a href="#security_err">SECURITY_ERR</a></code> exception whenever any of the members of a <code><a href="#location">Location</a></code> object are accessed by @@ -43910,7 +43866,7 @@ </ul></div><div class="impl"> - <h4 id="history-notes"><span class="secno">5.10.5 </span>Implementation notes for session history</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i></p> + <h4 id="history-notes"><span class="secno">5.10.4 </span>Implementation notes for session history</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i></p> <!-- don't change the ID without updating multiple internal links --> <p><i>This section is non-normative.</i></p> @@ -44343,6 +44299,12 @@ </li> + <li><p>Remove any <a href="#concept-task" title="concept-task">tasks</a> + queued by the <a href="#history-traversal-task-source">history traversal task + source</a>.</li> <!-- so the network is racing + history.back(), in the case of setting location.href="" and + then calling history.back() --> + <li><p>Append a new entry at the end of the <code><a href="#history-0">History</a></code> object representing the new resource and its <code>Document</code> object and related state.</li> @@ -44630,6 +44592,9 @@ </li> + <li><p>Remove any <a href="#concept-task" title="concept-task">tasks</a> queued by + the <a href="#history-traversal-task-source">history traversal task source</a>.</li> + <li><p>Append a new entry at the end of the <code><a href="#history-0">History</a></code> object representing the new resource and its <code>Document</code> object and related state. Its <a href="#url">URL</a> must be set to the @@ -44700,8 +44665,7 @@ document</a>, if that is an element; otherwise there is no <i><a href="#target-element">target element</a></i>. <a href="#refsSELECTORS">[SELECTORS]</a></p> - - <h4 id="history-traversal"><span class="secno">5.11.9 </span>History traversal</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i></p> + </div><h4 id="history-traversal"><span class="secno">5.11.9 </span>History traversal</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i></p><!-- session history --><div class="impl"> <p>When a user agent is required to <dfn id="traverse-the-history">traverse the history</dfn> to a <i>specified entry</i>, optionally with <a href="#replacement-enabled">replacement @@ -44719,8 +44683,6 @@ created. (This can never happen with <a href="#replacement-enabled">replacement enabled</a>.)</li> - <li><p>Release the <a href="#storage-mutex">storage mutex</a>.</li> - <li><p>If the <a href="#current-entry">current entry</a>'s title was not set by the <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code> or <code title="dom-history-replaceState"><a href="#dom-history-replacestate">replaceState()</a></code> methods, then set its title to the value returned by the <code title="dom-document-title"><a href="#document.title">document.title</a></code> IDL @@ -44801,7 +44763,10 @@ <li><p>If the <i>specified entry</i> has a URL that differs from the <a href="#current-entry">current entry</a>'s only by its fragment identifier, and the two share the same <code>Document</code> object, then let - <var title="">hash changed</var> be true. Otherwise, let <var title="">hash changed</var> be false.</li> + <var title="">hash changed</var> be true, and let <var title="">old + URL</var> be the URL of the <a href="#current-entry">current entry</a> and <var title="">new URL</var> be the URL of the <i>specified + entry</i>. Otherwise, let <var title="">hash changed</var> be + false.</li> <li><p>If the traversal was initiated with <dfn id="replacement-enabled">replacement enabled</dfn>, remove the entry immediately before the @@ -44816,20 +44781,129 @@ view, for instance the scroll position or values of form fields, that it had previously recorded.</li> - <li><p>If the <i>specified entry</i> is a state object or the - first entry for a <code>Document</code>, the user agent must <a href="#activating-state-object-entries" title="activate the state object">activate that - entry</a>.</li> + <li> - <li><p>If <var title="">hash changed</var> is true, then - synchronously <a href="#fire-a-simple-event">fire a simple event</a> with the name <code title="event-hashchange">hashchange</code> at the <a href="#browsing-context">browsing - context</a>'s <code><a href="#window">Window</a></code> object.</li> + <p>If the <i>specified entry</i> is a state object or the first + entry for a <code>Document</code>, the user agent must run the + following substeps:</p> - <li><p>Release the <a href="#storage-mutex">storage mutex</a> again.</li> + <ol><li><p>If the entry is a <a href="#state-object">state object</a> entry, let <var title="">state</var> be a <a href="#structured-clone">structured clone</a> of that + state object. Otherwise, let <var title="">state</var> be + null.</li> + + <li> + + <p>Run the appropriate steps according to the conditions + described:</p> + + <dl class="switch"><dt>If the <a href="#current-document-readiness">current document readiness</a> is set to the + string "complete"</dt> + + <dd><p><a href="#queue-a-task">Queue a task</a> to fire a <code title="event-popstate"><a href="#event-popstate">popstate</a></code> event at the + <code><a href="#window">Window</a></code> object of the <code>Document</code>, using + the <code><a href="#popstateevent">PopStateEvent</a></code> interface, with the <code title="dom-PopStateEvent-state"><a href="#dom-popstateevent-state">state</a></code> attribute set to + the value of <var title="">state</var>. This event must bubble + but not be cancelable and has no default action.</dd> + + <dt>Otherwise</dt> + + <dd><p>Let the <code>Document</code>'s <dfn id="pending-state-object">pending state + object</dfn> be <var title="">state</var>. (If there was already + a <a href="#pending-state-object">pending state object</a>, the previous one is + discarded.)</p> + + <p class="note">The event will then be fired just after the <code title="event-load">load</code> event.</dd> + + </dl></li> + + </ol></li> + + <li><p>If <var title="">hash changed</var> is true, then + <a href="#queue-a-task">queue a task</a> to fire a <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> event at the + <a href="#browsing-context">browsing context</a>'s <code><a href="#window">Window</a></code> object, using + the <code><a href="#hashchangeevent">HashChangeEvent</a></code> interface, with the <code title="dom-HashChangeEvent-oldURL"><a href="#dom-hashchangeevent-oldurl">oldURL</a></code> attribute set to + <var title="">old URL</var> and the <code title="dom-HashChangeEvent-newURL"><a href="#dom-hashchangeevent-newurl">newURL</a></code> attribute set to + <var title="">new URL</var>. This event must bubble but not be + cancelable and has no default action.</li> <li><p>The <a href="#current-entry">current entry</a> is now the <i>specified entry</i>.</li> - </ol></div><h4 id="unloading-documents"><span class="secno">5.11.10 </span>Unloading documents</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><div class="impl"> + </ol><p>The <a href="#pending-state-object">pending state object</a> must be initially null.</p> + + <p>The <a href="#task-source">task source</a> for the tasks mentioned above is the + <a href="#dom-manipulation-task-source">DOM manipulation task source</a>.</p> + + + <h5 id="event-definitions"><span class="secno">5.11.9.1 </span>Event definitions</h5><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i></p> + + </div><p>The <dfn id="event-popstate" title="event-popstate"><code>popstate</code></dfn> event + is fired when navigating to a <a href="#session-history-entry">session history entry</a> + that represents a state object.<pre class="idl">interface <dfn id="popstateevent">PopStateEvent</dfn> : Event { + readonly attribute any <a href="#dom-popstateevent-state" title="dom-PopStateEvent-state">state</a>; + void <a href="#dom-popstateevent-initpopstateevent" title="dom-PopStateEvent-initPopStateEvent">initPopStateEvent</a>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in any stateArg); +};</pre><dl class="domintro"><dt><var title="">event</var> . <code title="dom-PopStateEvent-state"><a href="#dom-popstateevent-state">state</a></code></dt> + + <dd> + + <p>Returns the information that was provided to <code title="dom-history-pushState"><a href="#dom-history-pushstate">pushState()</a></code> or <code title="dom-history-replaceState"><a href="#dom-history-replacestate">replaceState()</a></code>.</p> + + </dd> + + </dl><div class="impl"> + + <p>The <dfn id="dom-popstateevent-initpopstateevent" title="dom-PopStateEvent-initPopStateEvent"><code>initPopStateEvent()</code></dfn> + method must initialize the event in a manner analogous to the + similarly-named method in the DOM Events interfaces. <a href="#refsDOMEVENTS">[DOMEVENTS]</a></p> + + <p>The <dfn id="dom-popstateevent-state" title="dom-PopStateEvent-state"><code>state</code></dfn> + attribute represents the context information for the event, or null, + if the state represented is the initial state of the + <code>Document</code>.</p> + + </div><hr><p>The <dfn id="event-hashchange" title="event-hashchange"><code>hashchange</code></dfn> + event is fired when navigating to a <a href="#session-history-entry">session history + entry</a> whose <a href="#url">URL</a> differs from that of the + previous one only in the fragment identifier.<pre class="idl">interface <dfn id="hashchangeevent">HashChangeEvent</dfn> : Event { + readonly attribute any <a href="#dom-hashchangeevent-oldurl" title="dom-HashChangeEvent-oldURL">oldURL</a>; + readonly attribute any <a href="#dom-hashchangeevent-newurl" title="dom-HashChangeEvent-newURL">newURL</a>; + void <a href="#dom-hashchangeevent-inithashchangeevent" title="dom-HashChangeEvent-initHashChangeEvent">initHashChangeEvent</a>(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString oldURLArg, in DOMString newURLArg); +};</pre><dl class="domintro"><dt><var title="">event</var> . <code title="dom-HashChangeEvent-oldURL"><a href="#dom-hashchangeevent-oldurl">oldURL</a></code></dt> + + <dd> + + <p>Returns the <a href="#url">URL</a> of the <a href="#session-history-entry">session history + entry</a> that was previously current.</p> + + </dd> + + + <dt><var title="">event</var> . <code title="dom-HashChangeEvent-newURL"><a href="#dom-hashchangeevent-newurl">newURL</a></code></dt> + + <dd> + + <p>Returns the <a href="#url">URL</a> of the <a href="#session-history-entry">session history + entry</a> that is now current.</p> + + </dd> + + </dl><div class="impl"> + + <p>The <dfn id="dom-hashchangeevent-inithashchangeevent" title="dom-HashChangeEvent-initHashChangeEvent"><code>initHashChangeEvent()</code></dfn> + method must initialize the event in a manner analogous to the + similarly-named method in the DOM Events interfaces. <a href="#refsDOMEVENTS">[DOMEVENTS]</a></p> + + <p>The <dfn id="dom-hashchangeevent-oldurl" title="dom-HashChangeEvent-oldURL"><code>oldURL</code></dfn> + attribute represents context information for the event, specifically + the URL of the <a href="#session-history-entry">session history entry</a> that was traversed + from.</p> + + <p>The <dfn id="dom-hashchangeevent-newurl" title="dom-HashChangeEvent-newURL"><code>newURL</code></dfn> + attribute represents context information for the event, specifically + the URL of the <a href="#session-history-entry">session history entry</a> that was traversed + to.</p> + + </div><h4 id="unloading-documents"><span class="secno">5.11.10 </span>Unloading documents</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><div class="impl"> <p>A <code>Document</code> has a <var title="">salvageable</var> state, which is initially true.</p> @@ -44992,13 +45066,21 @@ it must return the last value it was set to. On setting, the attribute must be set to the new value.</p> - </div><h4 id="aborting-a-document-load"><span class="secno">5.11.11 </span>Aborting a document load</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><p>If the user cancels any instance of the <a href="#fetch" title="fetch">fetching algorithm</a> in the context of a + </div><div class="impl"> + + <h4 id="aborting-a-document-load"><span class="secno">5.11.11 </span>Aborting a document load</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i></p> + + <p>If the user cancels any instance of the <a href="#fetch" title="fetch">fetching algorithm</a> in the context of a <code>Document</code> in a <a href="#browsing-context">browsing context</a>, then, if that <code>Document</code> is an <a href="#active-document">active document</a>, the user agent must <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-abort">abort</code> at that - <code>Document</code>'s <code><a href="#window">Window</a></code> object.</p><!-- I'd love to make this more precise, anyone have any suggestions - on what it should say? --><h3 id="links"><span class="secno">5.12 </span>Links</h3><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><h4 id="hyperlink-elements"><span class="secno">5.12.1 </span>Hyperlink elements</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><p>The <code><a href="#the-a-element">a</a></code>, <code><a href="#the-area-element">area</a></code>, and <code><a href="#the-link-element">link</a></code> + <code>Document</code>'s <code><a href="#window">Window</a></code> object.</p> + + <!-- I'd love to make this more precise, anyone have any suggestions + on what it should say? --> + + </div><h3 id="links"><span class="secno">5.12 </span>Links</h3><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><h4 id="hyperlink-elements"><span class="secno">5.12.1 </span>Hyperlink elements</h4><p class="XXX annotation"><b>Status: </b><i>Last call for comments</i><p>The <code><a href="#the-a-element">a</a></code>, <code><a href="#the-area-element">area</a></code>, and <code><a href="#the-link-element">link</a></code> elements can, in certain situations described in the definitions of those elements, represent <dfn id="hyperlink" title="hyperlink">hyperlinks</dfn>.<p>The <dfn id="attr-hyperlink-href" title="attr-hyperlink-href"><code>href</code></dfn> attribute on a hyperlink element must have a value that is a @@ -66129,7 +66211,7 @@ <tr><th> <code title="">onhashchange</code> <td> <code title="handler-window-onhashchange"><a href="#handler-window-onhashchange">body</a></code> - <td> <code title="event-hashchange">hashchange</code> event handler for <code><a href="#window">Window</a></code> object + <td> <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> event handler for <code><a href="#window">Window</a></code> object <td> <a href="#event-handler-content-attributes" title="event handler content attributes">Event handler content attribute</a> <tr><th> <code title="">oninput</code> @@ -66714,8 +66796,8 @@ <td> <code>Event</code> <td> Fired at form controls when the user changes the value of a control on the form - <tr><td> <code title="event-hashchange">hashchange</code> - <td> <code>Event</code> + <tr><td> <code title="event-hashchange"><a href="#event-hashchange">hashchange</a></code> + <td> <code><a href="#hashchangeevent">HashChangeEvent</a></code> <td> Fired at the <code><a href="#window">Window</a></code> when the fragment identifier part of <a href="#the-document-s-current-address">the document's current address</a> changes <tr><td> <code title="event-input">input</code>
Received on Friday, 29 January 2010 01:32:36 UTC