Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what's the difference between onload action and an action in a bottom script

Is there any functional difference between using body onload:

<!DOCTYPE html>
<html>
<head>
    <title>testing body onload</title>
</head>
<body onload="fu('this is from body onload')">
    <h2 id="I1">nothing yet</h2>
    <script>
        function fu (msg) {
            document.getElementById("I1").innerHTML = msg ;
        }
    </script>
</body>
</html>

on the one hand and executing a script at the end of the body:

<!DOCTYPE html>
<html>
<head>
    <title>testing body onload</title>
</head>
<body>
    <h2 id="I1">nothing yet</h2>
    <script>
        function fu (msg){
            document.getElementById("I1").innerHTML = msg ;
        }
        fu('this is from bottom script') ;
    </script>
</body>
</html>

The second seems better to me, certainly when there are more actions to do when a page is loaded. But maybe there is a pitfall I don't know?

like image 250
rafael Avatar asked Dec 20 '22 02:12

rafael


2 Answers

Yes, there is. Putting your code at the bottom is like putting it in a domready event, not onload.

Domready means that the html code was read (so the dom is ready, or in other words, you can now find dom elements with js selectors), while onload means that all the assets (img, css, etc..) are loaded as well (so, a much longer event).

Edit:

please also refer to MDN docs:

(this is basically like jquery's domready, and it's a document object's event): https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

this is the onload event, and it's a window object's event: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onload

like image 139
Luca Reghellin Avatar answered Dec 21 '22 22:12

Luca Reghellin


onload documentation from Mozilla:

The load event fires at the end of the document loading process. At this point, all of the objects in the document are in the DOM, and all the images, scripts, links and sub-frames have finished loading.

Placing scripts at the base of the page will run as soon as the browser has rendered the HTML.

For perception purposes I would combine the two and place your scripts at the bottom of the page in an onload callback, if needed.

like image 26
Curtis Avatar answered Dec 21 '22 22:12

Curtis