Ok Ariel, here is one test for current jQuery 1.2.6.
It shows the order of events is not what we would expect.
We expect ready() to fire before onload() on all browsers, so the order in the above example should be:
instead from Internet Explorer we get:
this produces unexpected behavior from code running on IE, normally this is more of an issue when both event are used, each starting different parts of the main code.
I have to stress that the "onreadystatechange" addition is absolutely necessary to fix other unexpected behaviors in IE especially those bound to the difference between cached and un-cached pages and the use of the Back/Forward buttons. The "doScroll()" trick is not an event, it is just a polling loop and is really useful only on the first fresh read of the page. When the page and it's content are already cached you will notice the firing happens through the "onreadystatechange" event.
You may easily test this strange IE behavior by inserting some logging lines in both of them and see the differences when a page has no assets at all, when it does have assets but is the first visit, and when it is fetched directly from the browser internal cache.
You see, also the solution on IE is just a few line this is a very elaborate strategy to get what most people want.
Unfortunately for all of us IE is not a joke, it still has more than half of the market. This solution also works on IE8, so keep it handy for the next 10 year.