Ist Lightbox aktiv?

Genau diese Frage möchte ich in Code umsetzen. Ich denke, es ist eine einfache Aufgabenstellung. Trotzdem bekomme ich nicht heraus, wie ich vorgehen muss:

Ich möchte zum Blättern der Homepage die Pfeiltasten verwenden. Wenn ich jetzt eine Seite in Lightbox “vergrössere” und dann mit den Pfeiltasten navigieren möchte, blättert zwar die Lightbox, aber auch die Seite. Dadurch wird Lightbox beendet.

Folgenden Code verwende ich für die Seitennavigation:

echo " <script type=\"text/javascript\">\n"; echo " var pages = new Array();\n"; echo " pages[0] = \"index.php?s=".$v."\";\n"; echo " pages[1] = \"index.php?s=".$z."\";\n"; echo " window.document.onkeyup = getKey;\n"; echo " function getKey(e) {\n"; echo " var key = e ? e.which : window.event.keyCode;\n"; echo " if (key == 39) {\n"; echo " window.location = pages[0];\n"; echo " }\n"; echo " if (key == 37) {\n"; echo " window.location = pages[1];\n"; echo " }\n"; echo " }\n"; echo " </script>\n";

Ich denke am einfachsten wäre eine if() Abfrage ob die Lightbox aktiv ist oder nicht. Aber wie finde ich heraus, ob Lightbox aktiv ist?

Hilft evtl. der Parameter, der die Lightbox abruft?

In dem du deren Code ein bisschen analysierst.

Schau, welche Stelle dafür verantwortlich ist, sie zu öffen, und wieder zu schliessen. Baue dort zwei Zeilen Code ein, die ein Flag setzen bzw. löschen, das du von ausserhalb abfragen kannst.

Nein, der ist nur dafür da, dass die Lightbox bei ihrer Initialisierung die entsprechenden Eventhandler auf den Elementen registriert.

Startfunktion und Endfunktion ist sehr gut gekennzeichnet. Jedoch bekomme ich es mit den Variablen nicht hin.
Mit dieser If Abfrage umgebe ich meinen Code, der die Page navigiert:

lightOn = true; setze ich in die Startfunktion der Lightbox.

Leider will es so nicht funktionieren. Liegt es evtl. daran, dass du mit den Flags was anders meinst als globale Variablen?

Vielleicht hängt es auch damit zusammen, dass ich die Lightbox Funktionen im Header als .js lade. Die Seitennavigation aber als Code direkt im Quelltext schreibe (da der Code dynamisch sein muss mit der vorherigen und nächsten Seite).

Edit: wenn ich lightOn = true; direkt vor die if Abfrage setze funktioniert es (resp. eben nicht mehr :smiley:)

Edit2: noch was, wenn ich die Variable ausserhalb der Startfunktion, aber im lightbox.js definiere, scheint es auch zu funktionieren.

Du scheinst eine wichtige JS-Grundlage zu übersehen:
wenn du die Variabel in ner Funktion definierst, ist dies eine Funktions-Variabel, sprich sie ist nur für diese funktion verfügbar.
mach ganz an den Anfang der Lightbox datei:

Dann in der Start funktion:

und in der Beendfunktion:

Wichtig hierbei ist, dass du NUR bei der definition var verwendest.
Wenn du in der Funktion dann wieder var scheibst, wird die Variabel als lokale Variabel neu definiert (sprich: eine neue variabel, die nur für die Funktion sichtbar ist)

mfg Joey