Zwerg Nase: Zwei Frames gleichzeitig ändern - ohne Ende...

Tach auch,

bei mir klappt was nicht.
ich überlege an einer anderen variante zum thema "Zwei Frames gleichzeitig ändern", da es ja mit den back- und forward-tasten des browsers immer hapert und das anbieten eigener back- und forward-tasten (http://selfhtml.teamone.de/javascript/beispiele/zweiframes.htm) den gebrauch der browsertasten auch nicht ausschließt.

nun habe ich also drei frames: navigation, logo, text. von navigation aus wird logo aufgerufen. "logo1.htm" überprüft beim laden per javascript, ob die zugehörige datei "text1.htm" im textframe steht, und ruft diese gegebenfalls auf:

if(parent.frames.text.document.url != "http://www.bla.de/text1.htm")
  parent.frames.text.document.location.href = "text1.htm";

das gilt auch für "logo2.htm" -> "text2.htm" usw.

so weit, so gut, aber nun kommt die back-taste ins spiel. sie ändert nur den zuletzt geänderten frame. dh., rufe ich von "navigation" aus "logo2.htm" auf (und somit "text2.htm") und klicke "back", dann ändert sich "text" aber "logo" bleibt wie zu erwarten gleich.

ok, jetzt kommt mein nicht ganz ausgereifter ansatz:

"text1.htm" soll nun seinerseits beim laden überprüfen, ob das zugehörige logo im logoframe steht, und wenn nicht soll jenes aufgerufen werden:

if(parent.frames.logo.document.url != "http://www.bla.de/logo1.htm")
  parent.frames.logo.document.location.href = "logo1.htm";

irgendeinen denkfehler habe ich aber, denn dieses script und das weiter oben aufgeführte rufen sich nun gegenseitig in endloser schleife auf: also absturz. eigentlich sollte das durch die bedingung doch ausgeschlossen sein!?!

danke für einsichten und ratschläge...

z.n.

  1. hiho

    gib mal per alert() aus, was denn .href von dem document wirklich ist...

    weil wenn sie sich in endlosschleife aufrufen, würd ich sagen es is keiner von beiden...

    1. hiho

      gib mal per alert() aus, was denn .href von dem document wirklich ist...

      weil wenn sie sich in endlosschleife aufrufen, würd ich sagen es is keiner von beiden...

      hohi,

      das ist es nicht. hab ich schon versucht. hab die url sogar ausgegeben und direkt ins script kopiert, wegen schreibfehlern und so.

      apropós, "URL" muss im script groß geschrieben werden (warum eigentlich?) - dann funktionerts deshalb aber trotzdem noch nicht.

      sonst noch ideen?

      zwerch

  2. Hi,

    ich denke, ich würde es so machen:

    in der text1.htm kommt ein onload, welches folgendes script ausführt:
    parent.frames.logo.document.location.replace = "logo1.htm";

    dadurch hast Du folgende Vorteile:
    1. Du brauchst kein 2 Frame script, da jede textx.htm ihr eigenes Logo aufruft
    2. durch replace verhindest Du, daß Dein logo-Frame eine History hat, also betrifft "Zurück" usw. nur Dein text-Frame
    3. und dann wird ja bei "Zurück" usw. wieder das richtige logox.htm aufgerufen
    4. Sollte javascript deaktiviert sein, kann man ja immerhin noch die textx.htm Seiten aufrufen und lesen, wozu man ja die logox.htm nicht braucht.

    Viele Grüße aus Herzi,

    Ronny

  3. Moin, moin!

    Ich habe es gerade probiert und so zum Laufen gebracht:

    if(parent.text.document.URL != "http://www.bla.de/text1.htm") parent.text.document.location.href = "text1.htm";

    Norbert

  4. Hi,

    ...

    "text1.htm" soll nun seinerseits beim laden überprüfen, ob das zugehörige logo im logoframe steht, und wenn nicht soll jenes aufgerufen werden:...

    Hast Du es statt mit document.URL mal mit location.href versucht?
    Also:
    if (parent.text.location.href != "www.bla.com/logo1.htm"){
      parent.text.location.href = "www.bla.com/logo1.htm";
    }

    oder auch

    if (parent.text.location.href.substr(parent.text.location.href.length-10, parent.text.location.href.length)
       {parent.frames.text.document.location.href = "logo1.htm"}

    Gruss, Mel