Cómo ejecutar una función cuando se carga la página?


Quiero ejecutar una función cuando se carga la página, pero no quiero usarla en la etiqueta <body>.

Tengo un script que se ejecuta si lo inicializo en el <body>, así:

function codeAddress() {
  // code
}
<body onLoad="codeAddress()">

Pero quiero ejecutarlo sin el <body onLoad="codeAddress()"> y he intentado muchas cosas, por ejemplo, esto:

window.onload = codeAddress;

Pero no está funcionando.

Entonces, ¿cómo lo corro cuando se carga la página?

Author: Xufox, 2011-01-30

6 answers

window.onload = codeAddress; debería funcionar - aquí hay una demo , y el código completo:

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript">
        function codeAddress() {
            alert('ok');
        }
        window.onload = codeAddress;
        </script>
    </head>
    <body>
    
    </body>
</html>

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript">
        function codeAddress() {
            alert('ok');
        }
        
        </script>
    </head>
    <body onload="codeAddress();">
    
    </body>
</html>
 288
Author: Darin Dimitrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-18 11:25:01

En lugar de usar jQuery o window.onload, JavaScript nativo ha adoptado algunas funciones excelentes desde el lanzamiento de jQuery. Todos los navegadores modernos ahora tienen su propia función DOM ready sin el uso de una biblioteca jQuery.

Lo recomendaría si usa Javascript nativo.

document.addEventListener('DOMContentLoaded', function() {
    alert("Ready!");
}, false);
 110
Author: Spencer May,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-22 22:27:34

Tomando la respuesta de Darin pero al estilo jQuery. (Sé que el usuario pidió javascript).

Ejecución de violín

$(document).ready ( function(){
   alert('ok');
});​
 35
Author: Eat at Joes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-29 16:32:50

window.onload = function() { ... sucesivamente. no es una gran respuesta.

Esto probablemente funcionará, pero también romperá cualquier otra función que ya esté conectada a ese evento. O, si otra función se engancha en ese evento después del tuyo, romperá el tuyo. Por lo tanto, puede pasar muchas horas más tarde tratando de averiguar por qué algo que estaba funcionando ya no lo es.

Una respuesta más robusta aquí:

if(window.attachEvent) {
    window.attachEvent('onload', yourFunctionName);
} else {
    if(window.onload) {
        var curronload = window.onload;
        var newonload = function(evt) {
            curronload(evt);
            yourFunctionName(evt);
        };
        window.onload = newonload;
    } else {
        window.onload = yourFunctionName;
    }
}

Algún código que he estado usando, olvido dónde lo encontré para darle al autor crédito.

function my_function() {
    // whatever code I want to run after page load
}
if (window.attachEvent) {window.attachEvent('onload', my_function);}
else if (window.addEventListener) {window.addEventListener('load', my_function, false);}
else {document.addEventListener('load', my_function, false);}

Espero que esto ayude :)

 7
Author: Will,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-05 13:32:50

Solución Alternativa. Prefiero esto por la brevedad y simplicidad del código.

(function () {
    alert("I am here");
})();

Esta es una función anónima, donde no se especifica el nombre. Lo que sucede aquí es que, la función se define y ejecuta juntos. Agregue esto al principio o al final del cuerpo, dependiendo de si se va a ejecutar antes de cargar la página o poco después de que se carguen todos los elementos HTML.

 5
Author: Habeeb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-18 13:24:34

Eche un vistazo al script domReady que permite configurar múltiples funciones para ejecutarse cuando el DOM se ha cargado. Es básicamente lo que hace Dom ready en muchas bibliotecas JavaScript populares, pero es liviano y se puede tomar y agregar al inicio de su archivo de script externo.

Ejemplo de uso

// add reference to domReady script or place 
// contents of script before here

function codeAddress() {

}

domReady(codeAddress);
 3
Author: Russ Cam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-30 11:30:01