Question: For a while I had been running JavaScript component initialization by waiting for the "onload" event to fire and executing a `main()` of sorts. It seemed cleaner and you could be sure the ID state of your DOM was in order. But after some time of putting that through its paces I found that the component's initialization was choked off by any sort of resource hanging during the load (images, css, iframes, flash, etc.).

Now I have moved the initialization invocation to the end of the HTML document itself using inlined `<script />` execution and found that it pushes the initialization before other external resources.

Now I wonder if there are some pitfalls that come with doing that instead of waiting for the "onload".

Which method are you using?

**EDIT**: Thanks. It seems each library has a specialized function for `DOMContentLoaded`/`readyState` implementation differences. I use prototype so [this](http://www.prototypejs.org/api/document/observe) is what I needed.

Answer: 
Jquery has $(document).ready()

The ideal point at which to run most scripts is when the document is ready, and not necessarily when it is "loaded".

[See here](http://encosia.com/2009/03/25/document-ready-and-pageload-are-not-the-same/)
I use neither. Instead, I depend on [YUI's onDomReady()](http://developer.yahoo.com/yui/event/#ondomready) (or onContentReady()/onAvailable()), because it handles the timing of initialization for me.

(Other JS libraries have similar methods for executing only once the page is fully loaded, as this is a common JS problem.)