<script defer> and $(document).ready

The defer attribute has a good write-up and analysis. Also See the comments to the post for additional info on how defer has been re-defined in HTML5.

My conclusion: defer is too browser dependent to count on. Therefore use the jQuery doc ready technique.

To put it another way, an important reason for jQuery is to cover browser inconsistencies. Defer is another such inconsistency that should be avoided for well written pages.


Based on this fiddle I have to say jQuery's $(document).ready() executes after a script declared with defer. I tested it with Firefox and Chrome, and both had the same behavior independently of the sequence of the scripts.

I guess behavior on other browsers might change based on their implementation, so it's always uncertain.

EDIT: As it turns out, the defer attribute should be used with an external javascript file. I edited the fiddle to show this, apparently with the same results.

Updated fiddle here: http://jsfiddle.net/RNEZH/15/