Richard: keine "klassische Frames Frage" ... Frames ansprechen

Wie Gesagt, über die allbekannte und allerorts lästige "Frames-Frage" bin ich hinaus ;-)

Allerdings machen mir diese Frames immernoch zu schaffen:

Folgendes, meine Site ist so aufgebaut, dass die vier Hauptmenüpunkte jeweils mit einem eigenen frameset seitenfüllend starten. in dem Frameset gibt es auch immer ein Frame, das, "textFrame" genannt, den aktuellen Text anzeigt.

Möchte ich nun einen bestimmten Text sehen, starte ich das jeweilige(!) (Haupt-)Frameset und kann dann mit einem link schnell zum gewünschten Text mit "<a href="dertext.html" target="textFrame">" gelangen.

ABER
was mache ich, wenn ich mich nicht im jeweiligen Hauptframeset befinde? z.b. Ich möchte von einer ganz anderen Seite in mein Frameset und dort dann noch schnell ein Frame wechseln, bevor das ganze angezeigt wird.

(<a href="frameset.html" onClick="javascript: )
document.frames[textFrame].src='dertext.html'"> in einem onClick-EventHandler neben dem link funktioniert leider nicht.
Gehe ich das total falsch an?
Gibt es eine logische Lösung, die Frames einer Datei anzusprechen, die erst geladen wird?

Bin für jeden Sachdienlichen Hinweis sehr dankbar!
Richard

  1. Du musst die Frames in der reihenfolge zählen, in der du sie in den Quelltext eingetippt hast. Du fängst bei 0 an, also 0, 1, 2, ... wenn du bei deinem Frame angekommen bist, schreibst du alles wie gehabt, nur dann
    frames[die Zahl, die du gezählt hast]
    Außerdem kommt beim onClick kein javascript: davor

    Wie Gesagt, über die allbekannte und allerorts lästige "Frames-Frage" bin ich hinaus ;-)

    Allerdings machen mir diese Frames immernoch zu schaffen:

    Folgendes, meine Site ist so aufgebaut, dass die vier Hauptmenüpunkte jeweils mit einem eigenen frameset seitenfüllend starten. in dem Frameset gibt es auch immer ein Frame, das, "textFrame" genannt, den aktuellen Text anzeigt.

    Möchte ich nun einen bestimmten Text sehen, starte ich das jeweilige(!) (Haupt-)Frameset und kann dann mit einem link schnell zum gewünschten Text mit "<a href="dertext.html" target="textFrame">" gelangen.

    ABER
    was mache ich, wenn ich mich nicht im jeweiligen Hauptframeset befinde? z.b. Ich möchte von einer ganz anderen Seite in mein Frameset und dort dann noch schnell ein Frame wechseln, bevor das ganze angezeigt wird.

    (<a href="frameset.html" onClick="javascript: )
    document.frames[textFrame].src='dertext.html'"> in einem onClick-EventHandler neben dem link funktioniert leider nicht.
    Gehe ich das total falsch an?
    Gibt es eine logische Lösung, die Frames einer Datei anzusprechen, die erst geladen wird?

    Bin für jeden Sachdienlichen Hinweis sehr dankbar!
    Richard

    1. </faq/#Q-09> <- LESEN!

      Am besten die ganze </faq/>!

      Gruß
      Norbert

  2. Hallo,

    (<a href="frameset.html" onClick="javascript: )
    document.frames[textFrame].src='dertext.html'"> in einem onClick-EventHandler neben dem link funktioniert leider nicht.
    Gehe ich das total falsch an?
    Gibt es eine logische Lösung, die Frames einer Datei anzusprechen, die erst geladen wird?

    Wie wär's, wenn Du den Link so gestaltest:
    <a href="framset.html?textpage=blabla.html">Link-Text</a>
    Du kannst dann (per JavaScript in der frameset.html - das ist NICHT Serverseitig, obwohl's auf den ersten Blick so aussieht!) das "?textpage=blabla.html" auslesen und dann die Datei, die da angegeben wird in den Frame laden sobald onLoad aufgerufen wird. (Ich würde aber auf KEINEN Fall <frame>-Tags per JavaScript generieren, denn wenn einer im Browser JavaScript deaktiviert hat, dann läd er nicht mal mehr die Standardseite)

    Grüße,

    Christian

    1. Danke soweit...

      Du kannst dann das "?textpage=blabla.html" auslesen und dann die Datei, die da angegeben wird in den Frame laden sobald onLoad aufgerufen wird.

      d.h. 'textpage' steht dann als Variable zur Verfügung, wie in PHP? Aber wie lese ich sie aus...

      <body onload="document.frames[textFrame].src=textpage">

      ..so?

      Und was passiert, wenn man die Seite ohne Übergebene Variable startet? ist dann der textFrame leer, weil er keine Variable findet???

      1. Hallo,

        Du kannst dann das "?textpage=blabla.html" auslesen und dann die Datei, die da angegeben wird in den Frame laden sobald onLoad aufgerufen wird.

        d.h. 'textpage' steht dann als Variable zur Verfügung, wie in PHP? Aber wie lese ich sie aus...

        <body onload="document.frames[textFrame].src=textpage">

        ..so?

        Nicht ganz - in JavaScript ist das ganze etwas komplizierter als in PHP. Es steht die Variable location.search (http://selfhtml.teamone.de/javascript/objekte/location.htm#search  zur Verfügung. Dort ist der ganze String "?textpage=blabla.html" drinnen. Du kannst auch, damit es einfacher wird, nur "?blabla.html" übergeben und das "?" wegschneiden. Wenn Du bei der ersten Methode ("?textpage=blabla.html") bleibst, müsstest Du vielleicht einen mini-Parser schreiben oder schauen, ob's schon so was gibt.

        BTW: Hast Du PHP zur Verfügung? Dann ginge es noch einfacher (also auch "?textpage=blabla.html" anhängen und in PHP dann den Frametag à la echo "<frame src="".urlencode($_GET["textpage"])."" ...>"; ausgeben.)

        Und was passiert, wenn man die Seite ohne Übergebene Variable startet? ist dann der textFrame leer, weil er keine Variable findet???

        Ich würde 'ne if-Anweisung machen, dass, falls da nix angegeben wird, auch document.frames[textFrame].src nix zugewiesen wird (dann wird da ja die Standardseite des Framesets geladen, die Du im <frame>-Tag angegeben hast) - genauer gesagt umgekehrt: NUR WENN was übergeben wird, DANN mache document.frames[textFrame].src = ...

        Grüße,

        Christian

  3. Hallo Richard,

    es gibt einen sehr guten feature-Artikel zum Thema:

    Martin Wernecke
    Datei dynamisch in Frameset laden

    http://aktuell.de.selfhtml.org/artikel/javascript/dyn-frames/index.htm#a1

    Was die Kollegen zur Übergabe der Informationen in der URL gesagt haben, ist prinzipiell richtig, dort findest Du ein genaues Codebeispiel für die aufrufende und die aufgerufene Frameseite. Wenn Du verschachtelte Frames verwendest, musst Du allerdings noch etwas Gehirnschmalz investieren.

    Viele Grüße

    Mathias Bigge