Lieber Gernot,
was spricht denn dagegen, dass jedes Script von Dir seine eigene Einbindung in die window.onload-Funktion vornimmt?
Ich habe mir angewöhnt, alle Scripte extern auszulagern, als eigene Objekte zu definieren und ihre jeweils eigene Initialisierung vornehmen zu lassen. Da sie als eigene Objekte existieren, kann ich bequem die jeweils vorhandenen window.onload-Funktionen in ihnen als eine Eigenschaft "oldWinOnLoad" speichern (und andere Events wie z.B. window.onResize "verbiege" ich ebenso).
Beispiel (externe .js-Datei): ---------------------------------------------
meinObjekt = {
eineFunktion : function (param) {
code...
},
// Initialisierungsfunktion, um Einstellungen für meinObjekt vorzunehmen
init : function () {
... Code ...
},
// onload-Handler erweitern
onloadEinbinden : function () {
if (typeof(window.onload) == "function")
// alten Handler speichern
meinObjekt.oldWinOnLoad = window.onload;
// onload-Handler in eine Funktion einwickeln
window.onload = function () {
if (meinObjekt.oldWinOnLoad)
// existiert nur, wenn auch eine Funktion drinnesteckt
meinObjekt.oldWinOnLoad(); // alte onload-Funktion(en) ausführen
meinObjekt.init();
};
} // hier natürlich KEIN KOMMA (weil keine weitere Methode/Eigenschaft mehr folgt)
}; // meinObjekt zu Ende
// Jetzt in den onload-Event einbinden:
meinObjekt.onloadEinbinden();
---------------------------------------------------------------------------
Dieses Vorgehen ermöglicht es mir, beliebig meine Scripte auf Seiten einzubinden und dabei beliebig zu kombinieren. Ich muss sogar auf einer Seite (in meinem Dateimanager) ein bereits so eingebundenes Script ("Explorer" für das dynamische Auf- und Zuklappen, siehe Download-Seite) "patchen", damit es auf die gesonderten Anforderungen (Unterordner per AJAX nachladen) reagieren kann.
Das geht auch sehr einfach, indem man bereits definierte Funktionen oder Objekte einfach erweitert...
Beispiel von oben erweitert:
meinObjekt.eineFunktion = function (params) {
// neuer Code für diese Funktion
meinObjekt.neueEigenschaft = 'irgendetwas';
return false;
};
Liebe Grüße aus Ellwangen,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)