Zurüruck zum Inhalt

jQuery und document.ready Reihenfolge

Jeder Programierer kennt wohl das Problem: man hat ein vermeintlich kleines Problem, sucht Stunden (wenn nicht sogar Tage) nach einer Lösung um dann am Ende eigentlich einen relativ einfachen Lösungsweg zu finden. Bei mir ging es aktuell darum, das ich über die $(document).ready Funktion einmal eine Lightbox Funktion hinzugefügt habe, die danach auch noch automatisch aufgerufen werden sollte.

Zunächst habe ich versucht die Ausführung des entsprechenden Code zu verzögern, erfolgreich war das jedoch nicht. Aber es gibt ja immer mehrere Lösungsansätze…

Aber noch einmal von vorne: mit Hilfe von jQuery werden bestimmte Links des Dokumentes so erweitert, das sich beim anklicken eine Lightbox mit einem Container (auf der Seite) oder einem iFrame (mit der übergebenen URL) öffnet. Funktioniert wunderbar, solange ein User in Aktion tritt und den Link anklickt.

Nun sollte der Aufruf aber automatisch erfolgen, was das Skript in seiner ursprünglichen Form nicht angeboten hat. Also gilt es einfach den Klick programmtechnisch zu lösen. Das ist auch nicht weiter schwer, mit $([ELEMENT]).trigger(‚click‘) lässt sich das anklicken eines Links simulieren. Also fix eine weitere $document.ready()-Funktion gebastelt (die im Ablauf nach dem Aufruf der Funktion zur Erstellung der Lighboxfunktionalität kam), Dokument neu geladen und nichts.

Okay, das sollte dann nicht weiter schlimm sein, man kann ja mal ganz dreist die Ausführung des Codes verzögern, Versuche mit wait() brachten nicht das erwünschte Ergebnis, eine kleine while()-Schleife für die Verzögerung war da hilfreicher, war dann aber auch nur in Verbindung weitere alert()-Boxen erfolgreich. Da der Ansatz mit der Verzögerung auch Unsicherheiten beinhaltet (wird wirklich lange genug verzögert?), musste also eine andere Lösung her.

Mein nächster Ansatz war dann die Reihenfolge der document.ready Aufrufe zu verändern. Schnell waren Befehle wie jQuery.readyList.push gefunden, die aber auch nicht das erwünschte Ergebnis lieferten.

Mittlerweile habe ich mir dann schon Gedanken um Alternativen gemacht (andere Lightbox installieren, womit im gleichen Projekt dann schon drei verschiedene gneutzt werden würden), das ganze auf ganz anderem Weg zu lösen (ein kleines „CSS“-Popup, das sich dann über JS ausblenden lässt), als ich dann pber die $(window).load() Funktion gestolpert bin, die, wenn ich das richtig verstehe, erst nach $document.ready() ausgeführt wird. Ein kurzer Test in Firefox und im IE war erfolgreich, die Seite wird geladen, danach wird über document.ready die Lightboxfunktion hinzugefügt und anschliessen wir mit Hilfe von $(window).load() der Klick simuliert und damit die Lightbox geöffnet.

Einen Kommentar schreiben

Ihre Email wird NIE veröffentlicht oder weitergegeben. Benötigte Felder sind markiert *
*
*