[whatwg] readystatechange for SCRIPT

Kyle Simpson getify at gmail.com
Sat Sep 10 08:11:36 PDT 2011

> In regards to all the concern about double-firing of load detection logic, 
> IE9 added both `onload` event firing to their existing script element's 
> `onreadystatechange` firing. That's been around now for 6 months (not to 
> mention the year long platform-preview stage where content was tested in 
> IE9 relentlessly).
> AFAIK, there've been no major compat problems with that. Why? Because most 
> script loaders were already aware of a case (in Opera) where the load 
> handler might be fired twice, and so were already doing the filtering with 
> the "loaded" flag. LABjs has done exactly that for over 2 years now, as 
> have almost all other script loaders since. This is hardly something new.

Furthermore, this problem only presents itself if a script loader listens 
for both the `onload` and the `onreadystatechange` events. Prior to IE9, 
Opera was the only one to fire both, and now IE9+ and Opera fire both, but 
in any case, script loaders that were concerned with working correctly 
cross-browser have had to, for several years now, either:

* listen only for one event or the other, but not both (some do this)
* listen for both events, and keep a flag to filter if the handler is 
double-fired (most do this)

In either case, those are reasonable and long-established well-known 
work-arounds for the double-firing. Any script loader logic which isn't 
currently doing one of those two things is already *years* behind the times 
(and thus has been ostensibly broken in Opera/IE9 for years), regardless of 
the proposed (and now reverted) change of spec'ing `onreadystatechange` for 
script elements that other browsers might have picked up on.



More information about the whatwg mailing list