I am about to embark on a new web project and I plan to put some JavaScripts in the <head> and also some before </body>, using the following scheme:
-
Scripts that are essential for the UX of the page: in the
<head>. As I’ve picked up perusing the web – scripts in the<head>is loaded before the page loads, so it would make sense to put scripts that are essential to the user experience there. -
Scripts that are non-essential to the design and UX (Google Analytics scripts etc.): before the
</body>.
Is this a sensible approach?
Another approach would be to put all the scripts in the <head> and add defer attributes to the non-essential scripts. However, I read that older versions of Firefox don’t pick up the defer attribute.
I think a lot of developers run JavaScript just before the
</body>so that it is run after all the elements have been rendered.However, if you organise your code correctly, the position on the page doesn’t matter.
For example, when using jQuery, you can ensure the code isn’t run until the page and its elements are fully rendered by doing the following:
Then the script reference can be put in the
headtag.Script tags should be referenced just before
</body>. This prevents render blocking while the scripts load and is much better for site perception speed.No obtrusive JavaScript should be used when using this technique.