[webkit-dev] Limiting slow unload handlers (Re: Back/forward cache for pages with unload handlers)
Maciej Stachowiak
mjs at apple.com
Thu Sep 17 16:05:51 PDT 2009
On Sep 17, 2009, at 2:09 PM, Darin Fisher wrote:
>
>
> On Thu, Sep 17, 2009 at 12:52 PM, Maciej Stachowiak <mjs at apple.com>
> wrote:
>
> On Sep 17, 2009, at 12:14 PM, Darin Fisher wrote:
>
>>
>>
>> On Thu, Sep 17, 2009 at 2:28 AM, Maciej Stachowiak <mjs at apple.com>
>> wrote:
>>
>> On Sep 17, 2009, at 12:35 AM, Darin Fisher wrote:
>>
>>
>>
>> For <a ping> to be used as I suggested, you would need to set the
>> href to a javascript URL such as javascript:void(), so that it
>> would not interfere with an existing navigation.
>>
>> Navigating to a javascript: URL will still cancel with an existing
>> pending navigation, both per spec and in at least some browser
>> engines (including WebKit). For spec reference see step 5 here: <http://dev.w3.org/html5/spec/Overview.html#navigate
>> >. Note lack of exception for "javascript:" URLs.
>>
>> nit: WebKit and most browsers that I tested _only_ do so if the
>> javascript: URL evaluates to a string. Take a look at
>> FrameLoader::executeIfJavaScriptURL(). I can also share my test
>> case with you if you are still doubting! ;-)
>
> My test case did this from an onclick handler, and the navigation to
> yahoo.com did not happen:
>
> location.href="http://yahoo.com/";
> location.href="javascript:void()";
>
>
> Yes, in that case the scheduled location change from the first href
> assignment is cancelled by the second.
>
> My test case was to dispatch a click event to an anchor tag during
> the unload handler. Set the anchor's href to javascript:void() and
> notice that it does not interrupt the existing navigation.
Navigation from unload handlers is buggy.
>
> It may be that other ways of navigating to a javascript: URL don't
> stop a pending load, but that would be a bug.
>
> I'm not sure. It seems like each browser goes out of its way to
> only cancel the existing navigation when the javascript: URL results
> in a string. Coincidence, really??
It seems like a bug that it's inconsistent between different ways of
navigating.
>
>
> Based on your comments below, I think the expedient thing to do is
> to let Image loads (only) complete their I/O when initiated from
> unload or pagehide.
>
> Why exclude beforeunload? Some of the sites we found use the busy
> loop hack in beforeunload.
I wasn't deliberately excluding it. Including beforeunload seems fine.
Regards,
Maciej
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20090917/d71eba72/attachment.html>
More information about the webkit-dev
mailing list