- From: Ian Hickson <ian@hixie.ch>
- Date: Tue, 27 Jul 2010 22:07:18 +0000 (UTC)
- To: Ben Lerner <t-benle@microsoft.com>
- cc: "www-dom@w3.org" <www-dom@w3.org>
On Tue, 1 Jun 2010, Ben Lerner wrote: > > Apologies if this has been addressed elsewhere, or if this is the wrong > forum to ask this... According to the spec, > > The joint session history of a History object is the union of all the > session histories of all browsing contexts of all the fully active > Document objects that share the History object'stop-level browsing > context, with all the entries that are current entries in their > respective session histories removed except for the current entry of the > joint session history. > > This was changed as part of bug 7858 > (http://www.w3.org/Bugs/Public/show_bug.cgi?id=7858), 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? As far as I can tell, it doesn't really matter. The "current entry of the joint session history" is just a convenient placeholder for all three. > 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. Indeed. > 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? It would be D2, D4. > 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". It would be D2, D3, D5. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Tuesday, 27 July 2010 22:07:45 UTC