[whatwg] should we add beforeload/afterload events to the web platform?
simonp at opera.com
Wed Jan 11 03:59:31 PST 2012
On Tue, 10 Jan 2012 07:34:19 +0100, Boris Zbarsky <bzbarsky at mit.edu> wrote:
> On 1/10/12 1:02 AM, Boris Zbarsky wrote:
>> I'd like to understand the client-side transformation use-case better,
>> in particular. What is it really trying to do?
> OK, I got more context on this. The goal of the client-side
> transformation case is effectively do something like what one can do
> with XSLT in XML. Specifically:
> 1) Don't actually render the HTML coming down the pipe. This includes
> not doing any loads from it, but also includes not actually doing
> layout, not running scripts in the page, etc.
> 2) Bind some sort of transformation to it (in this case a script that
> runs on the DOM or on the original source, depending).
> 3) Render the result of that transformation.
> mobify uses beforeload for a poor-man's approximation to #1: it can
> block loads, but not prevent execution of inline scripts or prevent
> layout (short of adding "display:none" styles to the page itself). Then
> it does various other hackery to do #2 and #3.
> I agree that this is a good use case to solve, but beforeload doesn't
> really solve it. We should provide a better solution.
> For the rest, I just checked and WebKit does set the event target to the
> node triggering the load, at least for <script> nodes. I can nearly
> guarantee that we would NOT be willing to do that in Gecko even if we
> were convinced that the 'beforeload' event is a good idea in the first
> The 'afterload' event doesn't have the same sort of problems, of course;
> it's no different from existing 'load' events in cases when it's fired
> on an element. Whether it provides a good solution for other cases, I
> haven't had a chance to think through yet.
Might not be cross-browser yet (e.g. Opera seems to run the image's onload
handler), but should work per spec I think. Well, the load can't be
prevented if it's speculatively loaded it before the script has executed,
but maybe that's fine for the use case.
More information about the whatwg