[html5] r5964 - [agiow] (1) Revamp pushState() to work like Firefox 4, since that actually makes [...]
whatwg at whatwg.org
whatwg at whatwg.org
Thu Mar 24 17:55:07 PDT 2011
Author: ianh
Date: 2011-03-24 17:55:06 -0700 (Thu, 24 Mar 2011)
New Revision: 5964
Modified:
complete.html
index
source
Log:
[agiow] (1) Revamp pushState() to work like Firefox 4, since that actually makes the API useful. See also http://hacks.mozilla.org/2011/03/history-api-changes-in-firefox-4/, WHATWG mail, and the bug below.
Fixing http://www.w3.org/Bugs/Public/show_bug.cgi?id=12277
Modified: complete.html
===================================================================
--- complete.html 2011-03-24 23:59:36 UTC (rev 5963)
+++ complete.html 2011-03-25 00:55:06 UTC (rev 5964)
@@ -239,7 +239,7 @@
<header class=head id=head><p><a class=logo href=http://www.whatwg.org/ rel=home><img alt=WHATWG height=101 src=/images/logo width=101></a></p>
<hgroup><h1>Web Applications 1.0</h1>
- <h2 class="no-num no-toc">Living Standard — Last Updated 24 March 2011</h2>
+ <h2 class="no-num no-toc">Living Standard — Last Updated 25 March 2011</h2>
</hgroup><p>You can take part in this work. <a href=http://www.whatwg.org/mailing-list>Join the working group's discussion list.</a></p>
<p><strong>Web designers!</strong> We have a <a href=http://blog.whatwg.org/faq/>FAQ</a>, a <a href=http://forums.whatwg.org/>forum</a>, and a <a href=http://www.whatwg.org/mailing-list#help>help mailing list</a> for you!</p>
<!--<p class="impl"><strong>Implementors!</strong> We have a <a href="http://www.whatwg.org/mailing-list#implementors">mailing list</a> for you too!</p>-->
@@ -60418,6 +60418,7 @@
<pre class=idl>interface <dfn id=history-0>History</dfn> {
readonly attribute long <a href=#dom-history-length title=dom-history-length>length</a>;
+ readonly attribute any <a href=#dom-history-state title=dom-history-state>state</a>;
void <a href=#dom-history-go title=dom-history-go>go</a>(in optional long delta);
void <a href=#dom-history-back title=dom-history-back>back</a>();
void <a href=#dom-history-forward title=dom-history-forward>forward</a>();
@@ -60433,6 +60434,14 @@
</dd>
+ <dt><var title="">window</var> . <code title=dom-history><a href=#dom-history>history</a></code> . <code title=dom-history-state><a href=#dom-history-state>state</a></code></dt>
+
+ <dd>
+
+ <p>Returns the current <a href=#state-object>state object</a>.</p>
+
+ </dd>
+
<dt><var title="">window</var> . <code title=dom-history><a href=#dom-history>history</a></code> . <code title=dom-history-go><a href=#dom-history-go>go</a></code>( [ <var title="">delta</var> ] )</dt>
<dd>
@@ -60515,6 +60524,11 @@
<p>The actual entries are not accessible from script.</p>
+ <p>The <dfn id=dom-history-state title=dom-history-state><code>state</code></dfn>
+ attribute of the <code><a href=#history-0>History</a></code> interface must return the last
+ value it was set to by the user agent. Initially, its value must be
+ null.</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
@@ -60683,17 +60697,9 @@
<li>
- <p>If the <a href=#current-document-readiness>current document readiness</a> is not yet set
- to the string "complete", let the <code><a href=#document>Document</a></code>'s
- <a href=#pending-state-object>pending state object</a> be another <a href=#structured-clone>structured
- clone</a> of the specified <var title="">data</var>. (If there
- was already a <a href=#pending-state-object>pending state object</a>, the previous one
- is discarded.)</p>
+ <p>Set <code title=dom-history-state><a href=#dom-history-state>history.state</a></code> to
+ another <a href=#structured-clone>structured clone</a> of the specified <var title="">data</var>.</p>
- <p class=note>This ensures that the <code title=event-popstate><a href=#event-popstate>popstate</a></code> event that will be fired
- when the document finally loads will accurately reflect the
- pushed or replaced state object.</p>
-
</li>
</ol><p class=note>The <var title="">title</var> is purely
@@ -60798,7 +60804,7 @@
document.forms.F.I.value = newI;
}
</SCRIPT>
-<BODY ONPOPSTATE="recover(event.state)">
+<BODY ONPOPSTATE="set(event.state)">
<FORM NAME=F>
State: <OUTPUT NAME=I>1</OUTPUT> <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()">
</FORM></pre>
@@ -62100,33 +62106,16 @@
state object. Otherwise, let <var title="">state</var> be
null.</li>
- <li>
+ <li><p>Set <code title=dom-history-state><a href=#dom-history-state>history.state</a></code> to <var title="">state</var>.</li>
- <p>Run the appropriate steps according to the conditions
- described:</p>
+ <li><p>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><a href=#document>Document</a></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.</li>
- <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><a href=#document>Document</a></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><a href=#document>Document</a></code>'s <a href=#pending-state-object>pending state
- object</a> 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>
-
- <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
+ <li><p>If <var title="">hash changed</var> is true, then 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
@@ -62136,12 +62125,7 @@
<li><p>The <a href=#current-entry>current entry</a> is now the <i>specified
entry</i>.</li>
- </ol><p>The <dfn id=pending-state-object>pending state object</dfn> is used to keep track of what
- state object to use in the inital <code title=event-popstate><a href=#event-popstate>popstate</a></code> event fired by the parser
- once it <a href=#stop-parsing title="stop parsing">stops parsing</a>. 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
+ </ol><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>
@@ -86588,14 +86572,6 @@
attribute set to false. This event must not bubble, must not be
cancelable, and has no default action.</li>
- <li><p>If the <code><a href=#document>Document</a></code> is in a <a href=#browsing-context>browsing
- context</a>, then <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=#document>Document</a></code>'s <code><a href=#window>Window</a></code> object 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
- current value of the <a href=#pending-state-object>pending state object</a>. This event
- must bubble but not be cancelable and has no default
- action.</li>
-
<li><p>If the <code><a href=#document>Document</a></code> has any <a href=#pending-application-cache-download-process-tasks>pending
application cache download process tasks</a>, then <a href=#queue-a-task title="queue a task">queue</a> each such <a href=#concept-task title=concept-task>task</a> in the order they were added to
the list of <a href=#pending-application-cache-download-process-tasks>pending application cache download process
Modified: index
===================================================================
--- index 2011-03-24 23:59:36 UTC (rev 5963)
+++ index 2011-03-25 00:55:06 UTC (rev 5964)
@@ -243,7 +243,7 @@
<header class=head id=head><p><a class=logo href=http://www.whatwg.org/ rel=home><img alt=WHATWG height=101 src=/images/logo width=101></a></p>
<hgroup><h1 class=allcaps>HTML</h1>
- <h2 class="no-num no-toc">Living Standard — Last Updated 24 March 2011</h2>
+ <h2 class="no-num no-toc">Living Standard — Last Updated 25 March 2011</h2>
</hgroup><p>You can take part in this work. <a href=http://www.whatwg.org/mailing-list>Join the working group's discussion list.</a></p>
<p><strong>Web designers!</strong> We have a <a href=http://blog.whatwg.org/faq/>FAQ</a>, a <a href=http://forums.whatwg.org/>forum</a>, and a <a href=http://www.whatwg.org/mailing-list#help>help mailing list</a> for you!</p>
<!--<p class="impl"><strong>Implementors!</strong> We have a <a href="http://www.whatwg.org/mailing-list#implementors">mailing list</a> for you too!</p>-->
@@ -60398,6 +60398,7 @@
<pre class=idl>interface <dfn id=history-0>History</dfn> {
readonly attribute long <a href=#dom-history-length title=dom-history-length>length</a>;
+ readonly attribute any <a href=#dom-history-state title=dom-history-state>state</a>;
void <a href=#dom-history-go title=dom-history-go>go</a>(in optional long delta);
void <a href=#dom-history-back title=dom-history-back>back</a>();
void <a href=#dom-history-forward title=dom-history-forward>forward</a>();
@@ -60413,6 +60414,14 @@
</dd>
+ <dt><var title="">window</var> . <code title=dom-history><a href=#dom-history>history</a></code> . <code title=dom-history-state><a href=#dom-history-state>state</a></code></dt>
+
+ <dd>
+
+ <p>Returns the current <a href=#state-object>state object</a>.</p>
+
+ </dd>
+
<dt><var title="">window</var> . <code title=dom-history><a href=#dom-history>history</a></code> . <code title=dom-history-go><a href=#dom-history-go>go</a></code>( [ <var title="">delta</var> ] )</dt>
<dd>
@@ -60495,6 +60504,11 @@
<p>The actual entries are not accessible from script.</p>
+ <p>The <dfn id=dom-history-state title=dom-history-state><code>state</code></dfn>
+ attribute of the <code><a href=#history-0>History</a></code> interface must return the last
+ value it was set to by the user agent. Initially, its value must be
+ null.</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
@@ -60663,17 +60677,9 @@
<li>
- <p>If the <a href=#current-document-readiness>current document readiness</a> is not yet set
- to the string "complete", let the <code><a href=#document>Document</a></code>'s
- <a href=#pending-state-object>pending state object</a> be another <a href=#structured-clone>structured
- clone</a> of the specified <var title="">data</var>. (If there
- was already a <a href=#pending-state-object>pending state object</a>, the previous one
- is discarded.)</p>
+ <p>Set <code title=dom-history-state><a href=#dom-history-state>history.state</a></code> to
+ another <a href=#structured-clone>structured clone</a> of the specified <var title="">data</var>.</p>
- <p class=note>This ensures that the <code title=event-popstate><a href=#event-popstate>popstate</a></code> event that will be fired
- when the document finally loads will accurately reflect the
- pushed or replaced state object.</p>
-
</li>
</ol><p class=note>The <var title="">title</var> is purely
@@ -60778,7 +60784,7 @@
document.forms.F.I.value = newI;
}
</SCRIPT>
-<BODY ONPOPSTATE="recover(event.state)">
+<BODY ONPOPSTATE="set(event.state)">
<FORM NAME=F>
State: <OUTPUT NAME=I>1</OUTPUT> <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()">
</FORM></pre>
@@ -62080,33 +62086,16 @@
state object. Otherwise, let <var title="">state</var> be
null.</li>
- <li>
+ <li><p>Set <code title=dom-history-state><a href=#dom-history-state>history.state</a></code> to <var title="">state</var>.</li>
- <p>Run the appropriate steps according to the conditions
- described:</p>
+ <li><p>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><a href=#document>Document</a></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.</li>
- <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><a href=#document>Document</a></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><a href=#document>Document</a></code>'s <a href=#pending-state-object>pending state
- object</a> 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>
-
- <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
+ <li><p>If <var title="">hash changed</var> is true, then 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
@@ -62116,12 +62105,7 @@
<li><p>The <a href=#current-entry>current entry</a> is now the <i>specified
entry</i>.</li>
- </ol><p>The <dfn id=pending-state-object>pending state object</dfn> is used to keep track of what
- state object to use in the inital <code title=event-popstate><a href=#event-popstate>popstate</a></code> event fired by the parser
- once it <a href=#stop-parsing title="stop parsing">stops parsing</a>. 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
+ </ol><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>
@@ -82524,14 +82508,6 @@
attribute set to false. This event must not bubble, must not be
cancelable, and has no default action.</li>
- <li><p>If the <code><a href=#document>Document</a></code> is in a <a href=#browsing-context>browsing
- context</a>, then <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=#document>Document</a></code>'s <code><a href=#window>Window</a></code> object 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
- current value of the <a href=#pending-state-object>pending state object</a>. This event
- must bubble but not be cancelable and has no default
- action.</li>
-
<li><p>If the <code><a href=#document>Document</a></code> has any <a href=#pending-application-cache-download-process-tasks>pending
application cache download process tasks</a>, then <a href=#queue-a-task title="queue a task">queue</a> each such <a href=#concept-task title=concept-task>task</a> in the order they were added to
the list of <a href=#pending-application-cache-download-process-tasks>pending application cache download process
Modified: source
===================================================================
--- source 2011-03-24 23:59:36 UTC (rev 5963)
+++ source 2011-03-25 00:55:06 UTC (rev 5964)
@@ -68578,6 +68578,7 @@
<pre class="idl">interface <dfn>History</dfn> {
readonly attribute long <span title="dom-history-length">length</span>;
+ readonly attribute any <span title="dom-history-state">state</span>;
void <span title="dom-history-go">go</span>(in optional long delta);
void <span title="dom-history-back">back</span>();
void <span title="dom-history-forward">forward</span>();
@@ -68595,6 +68596,14 @@
</dd>
+ <dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-state">state</code></dt>
+
+ <dd>
+
+ <p>Returns the current <span>state object</span>.</p>
+
+ </dd>
+
<dt><var title="">window</var> . <code title="dom-history">history</code> . <code title="dom-history-go">go</code>( [ <var title="">delta</var> ] )</dt>
<dd>
@@ -68679,6 +68688,11 @@
<p>The actual entries are not accessible from script.</p>
+ <p>The <dfn title="dom-history-state"><code>state</code></dfn>
+ attribute of the <code>History</code> interface must return the last
+ value it was set to by the user agent. Initially, its value must be
+ null.</p>
+
<p>When the <dfn 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
@@ -68895,18 +68909,10 @@
<li>
- <p>If the <span>current document readiness</span> is not yet set
- to the string "complete", let the <code>Document</code>'s
- <span>pending state object</span> be another <span>structured
- clone</span> of the specified <var title="">data</var>. (If there
- was already a <span>pending state object</span>, the previous one
- is discarded.)</p>
+ <p>Set <code title="dom-history-state">history.state</code> to
+ another <span>structured clone</span> of the specified <var
+ title="">data</var>.</p>
- <p class="note">This ensures that the <code
- title="event-popstate">popstate</code> event that will be fired
- when the document finally loads will accurately reflect the
- pushed or replaced state object.</p>
-
</li>
</ol>
@@ -69013,7 +69019,7 @@
document.forms.F.I.value = newI;
}
</SCRIPT>
-<BODY ONPOPSTATE="recover(event.state)">
+<BODY ONPOPSTATE="set(event.state)">
<FORM NAME=F>
State: <OUTPUT NAME=I>1</OUTPUT> <INPUT VALUE="Increment" TYPE=BUTTON ONCLICK="inc()">
</FORM></pre>
@@ -70488,41 +70494,18 @@
state object. Otherwise, let <var title="">state</var> be
null.</p></li>
- <li>
+ <li><p>Set <code title="dom-history-state">history.state</code> to <var
+ title="">state</var>.</p></li>
- <p>Run the appropriate steps according to the conditions
- described:</p>
+ <li><p>Fire a <code title="event-popstate">popstate</code> event at
+ the <code>Window</code> object of the <code>Document</code>, using
+ the <code>PopStateEvent</code> interface, with the <code
+ title="dom-PopStateEvent-state">state</code> attribute set to the
+ value of <var title="">state</var>. This event must bubble but not
+ be cancelable and has no default action.</p></li>
- <dl class="switch">
-
- <dt>If the <span>current document readiness</span> is set to the
- string "complete"</dt>
-
- <dd><p><span>Queue a task</span> to fire a <code
- title="event-popstate">popstate</code> event at the
- <code>Window</code> object of the <code>Document</code>, using
- the <code>PopStateEvent</code> interface, with the <code
- title="dom-PopStateEvent-state">state</code> attribute set to the
- value of <var title="">state</var>. This event must bubble but
- not be cancelable and has no default action.</p></dd>
-
- <dt>Otherwise</dt>
-
- <dd><p>Let the <code>Document</code>'s <span>pending state
- object</span> be <var title="">state</var>. (If there was already
- a <span>pending state object</span>, 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.</p></dd>
-
- </dl>
-
- </li>
-
- <li><p>If <var title="">hash changed</var> is true, then
- <span>queue a task</span> to fire a <code
- title="event-hashchange">hashchange</code> event at the
+ <li><p>If <var title="">hash changed</var> is true, then fire a
+ <code title="event-hashchange">hashchange</code> event at the
<span>browsing context</span>'s <code>Window</code> object, using
the <code>HashChangeEvent</code> interface, with the <code
title="dom-HashChangeEvent-oldURL">oldURL</code> attribute set to
@@ -70536,12 +70519,6 @@
</ol>
- <p>The <dfn>pending state object</dfn> is used to keep track of what
- state object to use in the inital <code
- title="event-popstate">popstate</code> event fired by the parser
- once it <span title="stop parsing">stops parsing</span>. The
- <span>pending state object</span> must be initially null.</p>
-
<p>The <span>task source</span> for the tasks mentioned above is the
<span>DOM manipulation task source</span>.</p>
@@ -98038,16 +98015,6 @@
attribute set to false. This event must not bubble, must not be
cancelable, and has no default action.</p></li>
- <li><p>If the <code>Document</code> is in a <span>browsing
- context</span>, then <span>queue a task</span> to fire a <code
- title="event-popstate">popstate</code> event at the
- <code>Document</code>'s <code>Window</code> object using the
- <code>PopStateEvent</code> interface, with the <code
- title="dom-PopStateEvent-state">state</code> attribute set to the
- current value of the <span>pending state object</span>. This event
- must bubble but not be cancelable and has no default
- action.</p></li>
-
<li><p>If the <code>Document</code> has any <span>pending
application cache download process tasks</span>, then <span
title="queue a task">queue</span> each such <span
More information about the Commit-Watchers
mailing list