remove - javascript addeventlistener events
Agregar mĂșltiples eventos window.onload (10)
¿Ha considerado usar algo como jQuery que proporciona un marco para la limpieza y agrega múltiples controladores de eventos?
En mi control de usuario ASP.NET estoy agregando algo de JavaScript al evento window.onload
:
if (!Page.ClientScript.IsStartupScriptRegistered(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 cuenta.
De hecho, de acuerdo con esta página de MSDN , parece que puede llamar a esta función varias veces para registrar varias secuencias de comandos. Solo necesita usar diferentes claves (el segundo argumento).
Page.ClientScript.RegisterStartupScript(
this.GetType(), key1, function1, true);
Page.ClientScript.RegisterStartupScript(
this.GetType(), key2, function2, true);
Creo que debería funcionar
La mayoría de las "soluciones" sugeridas son específicas de Microsoft o requieren bibliotecas infladas. Aquí hay una buena manera. Esto funciona con navegadores 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);
}
No sé mucho sobre ASP.NET, pero ¿por qué no escribir una función 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.
Prueba esto:
window.attachEvent("onload", myOtherFunctionToCall);
function myOtherFunctionToCall() {
// do something
}
edit: hey, ¡me estaba preparando para iniciar sesión con Firefox y reformatearlo por mi cuenta! Todavía no parece formatear código para mí con IE7.
Puedes hacer esto con jquery
$(window).load(function () {
// jQuery functions to initialize after the page has loaded.
});
Sé que esto ha sido respondido, pero solo quiero que sepas sobre esta función:
http://phrogz.net/JS/AttachEvent_js.txt
considera T
Todavía hay una solución fea (que es muy inferior al uso de un framework o addEventListener
/ attachEvent
) que es para guardar 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 cuenta que los marcos 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.
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 archivos 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 tiempo!
Mootools es otro gran marco de JavaScript que es bastante fácil de usar, y al igual que RedWolves dijo con jQuery , puedes simplemente seguir utilizando todos los controladores que quieras.
Para cada archivo * .js que incluyo, simplemente envuelvo el código en una función.
window.addEvent(''domready'', function(){
alert(''Just put all your code here'');
});
Y también hay ventajas de usar domready en lugar de onload