Agregar múltiples events window.onload

En mi control de usuario ASP.NET estoy agregando algo de JavaScript al evento window.onload :

 if (!Page.ClientScript.IsStartupScriptRegistenetworking(this.GetType(), onloadScriptName)) Page.ClientScript.RegisterStartupScript(this.GetType(), onloadScriptName, "window.onload = function() {myFunction();};", true); 

Mi problema es que si ya hay algo en el evento onload , entonces esto lo sobrescribe. ¿Cómo voy a permitir que dos controles de usuario ejecuten JavaScript en el evento de onload ?

Editar: gracias por la información sobre bibliotecas de terceros. Los tendré en count.

La mayoría de las "soluciones" sugeridas son específicas de Microsoft o requieren bibliotecas infladas. Aquí hay una buena manera. Esto funciona con browseres compatibles con W3C y con Microsoft IE.

 if (window.addEventListener) // W3C standard { window.addEventListener('load', myFunction, false); // NB **not** 'onload' } else if (window.attachEvent) // Microsoft { window.attachEvent('onload', myFunction); } 

Todavía hay una solución fea (que es muy inferior al uso de un framework o addEventListener / attachEvent ) que es para save el evento onload actual:

 function addOnLoad(fn) { var old = window.onload; window.onload = function() { old(); fn(); }; } addOnLoad(function() { // your code here }); addOnLoad(function() { // your code here }); addOnLoad(function() { // your code here }); 

Tenga en count que los frameworks como jQuery proporcionarán una forma de ejecutar código cuando el DOM esté listo y no cuando se cargue la página.

DOM está listo significa que su HTML tiene componentes cargados, pero no externos, como imágenes o hojas de estilo, lo que le permite ser llamado mucho antes de que se active el evento de carga.

Mootools es otro gran marco de JavaScript que es bastante fácil de usar, y al igual que RedWolves, dijo con jQuery que puedes simplemente mantener tantos manejadores como quieras.

Para cada file * .js que incluyo, simplemente envuelvo el código en una function.

 window.addEvent('domready', function(){ alert('Just put all your code here'); }); 

Y también hay ventajas de usar domready en lugar de onload

Tuve un problema similar hoy, así que lo resolví teniendo un index.js con lo siguiente:

 window.onloadFuncs = []; window.onload = function() { for(var i in this.onloadFuncs) { this.onloadFuncs[i](); } } 

y en files js adicionales que deseo adjuntar al evento onload solo tengo que hacer esto:

 window.onloadFuncs.push(function(){ // code here }); 

Normalmente uso jQuery, ¡pero esta vez estaba restringido a js puros que me obligaron a usar mi mente por un time!

¿Ha considerado usar algo como JQuery que proporciona un marco para la limpieza y agrega múltiples controlleres de events?

Prueba esto:

 window.attachEvent("onload", myOtherFunctionToCall); function myOtherFunctionToCall() { // do something } 

edit: hey, ¡me estaba preparando para iniciar session con Firefox y reformatearlo por mi count! Todavía no parece formatear código para mí con IE7.

No sé mucho sobre ASP.NET, pero ¿por qué no escribir una function personalizada para el evento de carga que a su vez llama a ambas funciones por usted? Si tiene dos funciones, llámelas desde un tercer script que registre para el evento.

De hecho, de acuerdo con esta página de MSDN , parece que puede llamar a esta function varias veces para registrar varias secuencias de commands. Solo necesita usar diferentes keys (el segundo argumento).

 Page.ClientScript.RegisterStartupScript( this.GetType(), key1, function1, true); Page.ClientScript.RegisterStartupScript( this.GetType(), key2, function2, true); 

Creo que debería funcionar

Sé que esto ha sido respondido, pero solo quiero que sepas sobre esta function:

http://phrogz.net/JS/AttachEvent_js.txt

considera T

Puedes hacer esto con jquery

 $(window).load(function () { // jQuery functions to initialize after the page has loaded. });