Tobias S.: Seitenwechsel in Frames registrieren und darauf reagieren

Beitrag lesen

Hallo zusammen!

Ich suche einen komfortablen Lösungsweg zu folgender Situation:

  • Frameset mit zwei oder mehr Frames A, B, ...
  • Den Frames ist der Inhalt aller anderen Frames unbekannt
  • Falls A seinen Inhalt wechselt, soll das den anderen Frames mitgeteilt werden, damit sie mit Javascript in irgend einer Form darauf reagieren können

Beispiel:

  • Frame A: Frame mit Hauptmenü
  • Frame B: Frame mit Content
  • Link in seite1.html in B führt zu seite2.html in B
  • A reagiert darauf, indem automatisch das Untermenü zu seite2.html geöffnet wird

Mein Problem umfasst nicht WELCHE Reaktion in A erfolgen soll, sondern WIE eine beliebige Aktion in einem fremden Frame angestoßen wird!

Folgende Lösungsansätze habe ich mir überlegt:

  1. Fremde Frames neu laden (fremde_frames.location.reload())
    Vorteil: Inhalt des fremden Frames könnte auf neue URL des geänderten Frames zugreifen und entsprechend reagieren
    Nachteil: Frames sollen reagieren und nicht neu geladen werden (Traffic)

  2. Im Inhalt aller anderen Frames existiert eine fest vorgegebene Funktion, die aufgerufen wird
    Vorteil: Kann direkt während des Seitenwechsels angestoßen werden
    Nachteil: Was soll die Funktion ausführen? Was getan werden soll ist dem wechselnden Frame leider unbekannt

  3. Ändern einer fest vorgegebenen Variable in allen anderen Frames
    Vorteil: Kann direkt während des Seitenwechsels angestoßen werden und bleibt unabhängig vom Inhalt der eigentlichen Reaktion, die ausgeführt werden soll
    Problem: Man bräuchte eine Möglichkeit um eine Variable auf Änderung zu überwachen (Variable ändert sich > Aktion wird ausgeführt). Eine Art Eventhandler für Variablenwerte. Eine andere - nicht ganz so elegante - Möglichkeit wäre, mit setInterval() regelmäßig eine Funktion aufzurufen, die den Status der Variable überwacht und bei einer Änderung entsprechend reagiert. All das müsste bei Bedarf vom Inhalt der fremden Frames implementiert werden. Die Lösung ist allerdings unsauber, da "ständig gearbeitet wird" und eine Reaktion  durch zu großzügig gesetzte Intervallpausen trotzdem zu spät kommen könnte.

Ich hoffe ich konnte meine Gedankengänge ausreichend schildern und freue mich über jeden Kommentar zu meinen Lösungsansätzen. Oder hat jemand einen völlig neuen Lösungsansatz?

Viele Grüße,
Tobias S.