On Thu, 22 Sep 2011 04:01:40 +0200, Glenn Maynard <[email protected]> wrote:
To my reading, a substep is a type of step. The "after finishing..."
sounds like it's saying not to terminate the currently-executing step;
that is, the event dispatch isn't stopped in the middle. Maybe "steps"
vs. "substeps"
are precisely defined somewhere else, but either way this could probably
be clearer. Anne?
Your interpretation is correct. I could make it say "step or substep" but
it seems people might want something else altogether.
I just tried this in FF6, and the behavior is inconsistent. If the TCP
connection has been established, then it follows your interpretation, and
you get onloadstart, onabort, onloadstart, onloadend, onloadend [1][3].
If the TCP connection hasn't yet been established [2][4], calling open()
from either onabort or onloadend throws NS_ERROR_IN_PROGRESS.
But open() has to dispatch a readystatechange event. That will get
somewhere in the middle of that, no?
With the various inconsistencies, I wonder if the spec can't actually be
changed to disallow open() during the events, following FF6--that
NS_ERROR_IN_PROGRESS is probably unintentional, but it's in a shipping
browser nonetheless. Wishful thinking, maybe...
There is the same problem with send() but there it was not a problem
before either because you just had readystatechange.
This sounds like a bug in the XHR spec as it doesn't fulfill the
invariants I listed.
I agree with those invariants, but they aren't normative anywhere, are
they?
Nope.
--
Anne van Kesteren
http://annevankesteren.nl/