Chamando múltiplas funções onload do Windows em JavaScript

Aqui está outro pequeno pedaço de Javascript truques que eu tive que cavar em volta, porque a situação commaned-lo. Em um dos meus sites, eu tive esta situação onde eu tive que implementar "windows.onload" duas vezes. A primeira coisa que veio à mente um inexperiente como o meu (eu tenho de dizer honestamente que, uma vez que tenho vindo a utilizar frameworks JavaScript e bibliotecas, tenho forgotton para fazer coisas simples no meu próprio ... triste mas é verdade), é o seguinte método ...

 window.onload = onloadfn1;
 window.onload = onloadfn2;
 window.onload = onloadfn3;
 etc ..

Desculpe dizer, mas, isso não vai funcionar ... não quero discutir a ciência execução de Javascript muito ... mas de acordo com a minha experiência recente, apenas a última função (onloadfn3) vai ficar doente realmente executado.

Em situações normais, ao contrário do meu (que eu vou falar um pouco mais tarde) ... você pode fazer uma das seguintes opções para executar funções onload mutliple ....

Ou algo assim

 doOnLoad função () {
         onloadfn1 ();
         onloadfn2 ();
         onloadfn3 ();
 }
 window.onload = doOnLoad;

Para a minha situação atual, eu não posso usar qualquer um dos acima ...
Por que eu preciso chamar windows.onload duas vezes, mas sim que chamar duas funções dentro de uma única função onload? Aqui é rápido olhar para a minha declaração de problema ...

"Minhas páginas do site são estruturados como o WordPress tema .... ou seja, há um header.php e footer.php comuns que é incluído em todas as páginas do site. Há uma função implementaion onload nas Footer.php fazer algumas funções onload comuns. E existem algumas páginas que precisam de algo de sua própria onload, além daqueles feito pela função onload comum. Se eu atribuir a função de retorno de chamada diretamente para o manipulador window.onload, ele irá sobrepor-callbacks previamente designados nos Footer.php "

.... O meu problema entendido :) ?

Bem! existem algumas soluções que eu encontrei. Todos eles são muito semelhantes e implementions principalmente de uma solução dada por Simon Willison ( http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...

Solução:

Basta adicionar o código javascript para site ...

 else { window.onload = function() { if (oldonload) { oldonload() } func() } } } função addLoadEvent (func) {var oldonload = window.onload; if (typeof window.onload = 'função') {window.onload = func} else {window.onload = function () {if (oldonload) {oldonload () } func ()}}} 

E chamá-lo de vez do usual "windows.onload"

 addLoadEvent (FunctionToRunOnPageLoad);
 (função addLoadEvent () {
 / * Mais código para ser executado no carregamento da página *
 }); 

Vantagens deste trecho de código ...
1. Primeiramente, Ele permite que você tenha vários eventos windows.onload, chamados de partes distintas do seu código, sem overridding a definição anterior
2. É muito discreto. Ele pode ser colocado em um arquivo com seus outros scripts ou em um arquivo separado.
3. Ele funciona mesmo se window.onload já foi definido.


6 Responses to "Chamando múltiplas funções onload do Windows em JavaScript"

Deixe uma resposta

NDK casa | Expressá-la | Expressando Palate | Expressando penmenship | Expressando Awe | expressando-se