[whatwg] should we add beforeload/afterload events to the web platform?
Boris Zbarsky
bzbarsky at MIT.EDU
Tue Jan 10 08:43:20 PST 2012
On 1/10/12 2:22 AM, Henri Sivonen wrote:
> I'm worried about the interaction with speculative loading. Right now,
> Gecko is more aggressive than WebKit about speculative loading.
Actually, I just checked and WebKit simply fires the "beforeload" event
way after it actually starts the load in speculative load situations.
Consider this testcase:
<!doctype html>
<script>
var start = new Date;
var log = "";
document.addEventListener("beforeload", function(e) {
log += "Starting load of " + e.target.id + ": " + (new Date -
start) + "\n";
}, true);
window.onload = function() {
log += "Finished page load: " + (new Date - start) + "\n";
alert(log);
}
</script>
<script id="one"
src="http://landfill.mozilla.org/ryl/slowResponse.cgi?time=4"
onload="log += 'Finished load of one: ' + (new Date - start) +
'\n'"></script>
<script id="two"
src="http://landfill.mozilla.org/ryl/slowResponse.cgi?time=5"
onload="log += 'Finished load of two: ' + (new Date - start) +
'\n'"></script>
The slowResponse.cgi script takes N seconds to respond where N is passed
in the "time" parameter.
When I load this testcase in either Chrome or Safari, I see the "load of
one" start at about 1ms into the timeline an finish about 4s into the
timeline. I see the "load of two" start about 4s into the timeline and
finish about 5s into the timeline. Since the "load of two" actually
takes at least 5s from when it starts, that means that the load really
started about 4s before the "beforeload" event fired.
So in WebKit this event is only good for preventing _processing_ of the
data in the page (e.g. preventing the script from executing when the
target is a <script>) but not much use for preventing loads, even if
some people seem to think that it is.
> I don't want to make Gecko less aggressive about speculative loading in
> order to fire beforeload exactly at the points where WebKit fires
> them.
The good news is that per above we really wouldn't have to; we'd just
fire it as late as we feel like. ;)
-Boris
More information about the whatwg
mailing list