- From: Ian Hickson <ian@hixie.ch>
- Date: Thu, 4 Feb 2010 11:45:13 +0000 (UTC)
On Fri, 29 Jan 2010, Olli Pettay wrote: > On 1/29/10 3:32 AM, Ian Hickson wrote: > > > > I've tried to spec this. There is a high risk of compatibility issues, > > so I would very much welcome feedback from implementors who try to > > implement this. > > > > The main goal of the change here is to make it possible to implement > > this (if not completely sanely, but it's the Web, there's only so much > > I can do) in a situation with each browsing context having its own > > process, as seen to some extent in IE and Chrome, and as is being > > examined by other browser vendors also. > > So why sync history isn't possible in IE or Chrome? Anything's _possible_, it's just that it's a lot more complicated. As Jonas said earlier in the thread, making history traversal asynchronous is likely to make things easier for Mozilla too. Sorry for overstating the case above, I have a tendency to exaggerate! > How should UA handle this case? User presses back (which hopefully does > pretty much the same as history.back()) but web page has some loop like > script which sets location.hash all the time. I would recommend that implementations prioritise tasks queued by user interaction, so that the script does not preempt the user's action. However, since that is a user interface issue, the spec does not specify it in any detail. (The spec doesn't require that you expose a back button at all.) > > If we can't do this asynchronously, it's going to really suck for > > multiprocess UAs, > > Depends for example on whether UA wants to put different domains in same > tab to different processes. And even if it does do, synchronous > back()/forward() should be possible. Maybe just not as easy. So I'm not > sure that "suck for multiprocess UAs" is a really good argument here. Certainly it isn't well-expressed, but it does seem important to make sure that the technology we are specifying can be sanely implemented in a multi-process architecture, since two UAs are already shipping with that technology, and at least one other (Mozilla) is working on a similar effort. I don't think anyone would deny that there are advantages to such an approach. > Uh, changing hashchange again to async. We must stop changing that all > the time. Though in this case I like the change. I never really > understood the sync hashchange, or the reasoning why it was changed to > be sync. Yeah, my apologies for the back-and-forth on this particular issue. I try to minimise churn in general, but in this case I failed. > So history.back(); history.back(); would queue 2 tasks? Yes. > And first one document is loaded (maybe from bfcache), and it could > synchronously do something like dispatch pageshow or whatever which > could do things like alert() and then second document was loaded at somepoint. > Kind of strange way to handle history.back(). For cross-document loads, back() has always been asynchronous, so I don't think that particular case is a change. I agree that it is not completely intuitive. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Thursday, 4 February 2010 03:45:13 UTC