<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">According to the spec,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-left:.5in">The <b>joint session history</b> of a <a href="http://www.whatwg.org/specs/web-apps/current-work/#history-0">History</a> object is the union of all the <a href="http://www.whatwg.org/specs/web-apps/current-work/#session-history" title="session history">session
histories</a> of all <a href="http://www.whatwg.org/specs/web-apps/current-work/#browsing-context" title="browsing context">browsing contexts</a> of all the <a href="http://www.whatwg.org/specs/web-apps/current-work/#fully-active">fully active</a> <a href="http://www.whatwg.org/specs/web-apps/current-work/#document">Document</a> objects
that share the <a href="http://www.whatwg.org/specs/web-apps/current-work/#history-0">History</a> object's<a href="http://www.whatwg.org/specs/web-apps/current-work/#top-level-browsing-context">top-level browsing context</a>, with all the entries that are <a href="http://www.whatwg.org/specs/web-apps/current-work/#current-entry" title="current entry">current
entries</a> in their respective <a href="http://www.whatwg.org/specs/web-apps/current-work/#session-history" title="session history">session histories</a> removed except for the <a href="http://www.whatwg.org/specs/web-apps/current-work/#current-entry-of-the-joint-session-history">current
entry of the joint session history</a>.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This was changed as part of bug 7858 (<a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=7858">http://www.w3.org/Bugs/Public/show_bug.cgi?id=7858</a>), but I’m not sure I understand it fully. Suppose I have a document D1 with two sibling
iframes, initially navigated to documents D2 and D3. The joint session history at this point should contain one entry, right? But is it D1, D2 or D3? Section 6.5.2 defines the page load processing model for HTML files, and says “After creating the Document
object, but before any script execution, certainly before the parser stops, the user agent must update the session history with the new page.” It doesn’t say anything about the relative maturations of multiple parsers handling multiple documents. From experimentation
with real browsers, it appears that the history entry should be D1. But I could reasonably finish parsing D1, process the iframe attributes for the first time, running the navigation algorithm up to step 12 (“… must continue these steps asynchronously”),
then finish parsing D1 and update its session history, before resuming the navigation algorithm, parsing D2 and updating the iframe’s session history. It seems I could even reasonably finish the two iframes in either order. This would lead to any of D1,
D2 or D3 being the most recent entry in the session histories.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Ok, next. If I click a link inside D2 and navigate that iframe to a new document D4, what should the joint session history now contain? It seems to me from browsing the web that it ought to be “whatever it was before, plus D4”, making
it “D1, D4”. But a literal reading of the joint-session-history definition above seems to contradict that: D1 is the current entry of the top-level session history, but it’s no longer the current entry of the joint session history, so it must be removed from
the joint session history, making the joint session history be merely “D4”. What am I missing?
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">To push it one step further, click on a link in D3, and navigate it to D5. I’d expect the joint session history to be “D1, D4, D5”, but again a literal reading seems to indicate that it will now be simply “D5”.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I hope this made some sense… any clarifications will be much appreciated
<span style="font-family:Wingdings">J</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Ben Lerner<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>