M-am confruntat zilele trecute cu o mic? probleme a c?rei rezolvare s-a dovedit într-un final destul de simpl?.
Problema pe care o aveam de rezolvat a fost ca evenimentul de "onload" s? poat? apela metode multiple. S? presupunem c? avem dou? fi?iere javascript: meniu.js ?i filtre.js.
În fi?ierul meniu.js avem o metod? de genul:
function initMenu() {
//initializeaza meniul
}function initFilters() {
//initializeaza filtrele
//(de exemplu, daca aveti o lista cu judete si una cu orase si doriti sa le sincronizati)
}Dorim ca la terminarea înc?rc?rii unei pagini HTML (evenimentul window.onload) s? apel?m ambele metode. Cum proced?m?
O solu?ie (cea clasic?) ar fi s? proced?m astfel:
window.onload = function() {
initMenu();
initFilters();
}O alt? solu?ie ar fi ca metodele s? fie executate automat, în momentul includerii fi?ierului javascript respectiv. Pentru aceasta avem nevoie de un fi?ier javascript suplimentar. Îl vom numi startup.js:
var __loaders = new Array();
function _load() {
for (var idx = 0; idx < __loaders.length; idx++) {
var _function_name = __loaders[idx] + '()';
eval(_function_name);
}
}
window.onload = _load;Acum, fi?ierele meniu.js ?i filtre.js trebuie modificate pu?in:
meniu.js
function initMenu() {
//initializeaza meniul
}
__loaders.push('initMenu');function initFilters() {
//initializeaza filtrele
//(de exemplu, daca aveti o lista cu judete si una cu orase si doriti sa le sincronizati)
}
__loaders.push('initFilters');