Pergunta

Apenas por uma questão de experimentação, eu estive tentando determinar maneiras diferentes para funções cadeia window.onload não-destrutiva em um navegador web. Esta é a idéia do que eu tenho até agora:

var load = window.onload;
var newFunction = function(){
    alert("ha!");
}
window.onload = function(){
    load();
    newFunction();
}

O problema que vejo com isso é que cada vez que você encadear uma função, ele acrescenta outro nível de chamadas de função para a pilha. Existe uma maneira melhor de fazer isso que não acrescentar profundidade desnecessária para a pilha de chamadas?

Foi útil?

Solução

Pode ser que vai ser melhor usar addEventListener / attachEvent?

modelos de registro de evento avançadas

Outras dicas

Você poderia ter um olhar para jQuery como eles lidam com isso.

A partir da jQuery docs :

Você pode ter tantos $ (document) .ready eventos em sua página como você gosta. As funções são executadas na ordem em que foram adicionados.

Eu prefiro usar o addEvent "bom o suficiente":

var addEvent = function( obj, type, fn ) {
        if (obj.addEventListener)
                obj.addEventListener(type, fn, false);
        else if (obj.attachEvent) 
                obj.attachEvent('on' + type, function() { return fn.apply(obj, new Array(window.event));});
}

De: http: //www.ilfilosofo. com / blog / 2008/04/14 / addEvent-preservando-presente /

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top