window.onload used to be pretty accurate.
But now we’re lazily loading stuff, using responsive images, dynamic elements rendered with JS and CSS. So, it’s not an accurate guide to user perception. E.g. take Gmail.
This isn’t ready till after window.onload. But there’s nothing that can tell us it’s ready.
Or Amazon.com, it’s usable (i.e. we can see products and prices) after around 2.0 seconds but the window.onload doesn’t fire till 5.8 seconds.
Which is the reasoning behind Speed Index at Web Page Test.