[whatwg] Navigation events generated during unload

Ian Hickson ian at hixie.ch
Sun Oct 11 18:04:08 PDT 2009


On Mon, 5 Oct 2009, Boris Zbarsky wrote:
> On 10/5/09 9:01 PM, Ian Hickson wrote:
> > Any suggestions? What do browsers actually do, white-box wise?
> 
> Gecko forbids most navigation between firing unload and the newly 
> loading page becoming the current page.  "most" means all history 
> navigation (including reload()) and attempts to navigate via the APIs 
> exposed to the browser UI.  It allows navigation via setting 
> location.href or calling location.replace _if_ the new URI is 
> same-origin with the URI being loaded (the one whose loading triggered 
> the unload event).  That is, you can't keep people on your site if 
> they're trying to go somewhere else.
> 
> See https://bugzilla.mozilla.org/show_bug.cgi?id=409888 for the reason 
> we added the same-origin exception and 
> https://bugzilla.mozilla.org/show_bug.cgi?id=371360 for the reason 
> there's a restriction to start with.
> 
> There is no special handling of beforeunload in this regard in Gecko.

On Mon, 5 Oct 2009, Boris Zbarsky wrote:
> 
> Oh, right.  The Gecko implementation of form submission and link clicks 
> performs the "are we after unload firing started, and if so, is the new 
> URI same-origin with the URI that was loading?" check at the moment of 
> the click or submit call, which is before target name resolution has 
> happened.  That could probably be changed, with enough effort (and 
> likely would be as part of making link clicks work however it is HTML5 
> defines them, instead of however it is they work in Gecko right now).

I specced something almost but not quite the same as what Gecko does. I'm 
aware of two differents. The first difference I could find is shown on 
this test case:

   http://www.hixie.ch/tests/adhoc/html/navigation/unload/cross-origin/004.html

I couldn't work out what Gecko is doing with it.

The second is that I also covered onunload. It seems everything that 
applies to one applies to the other; they run back to back as specced in 
HTML5.

Other than that, I think what I specced matches Gecko. The new text is 
step 3 of the navigation algorithm:

   http://www.whatwg.org/specs/web-apps/current-work/complete.html#navigate

Test suite (onunload only):

   http://www.hixie.ch/tests/adhoc/html/navigation/unload/

-- 
Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'


More information about the whatwg mailing list