Jan Entzminger: Bild tauschen in anderem Frame.Wie?

So ich hab ein Frame A und ein Frame B. In Frame A wird mit parent.frames[1].location='/website/navigation/diabetes_verstehen/nav_diabetes_verstehen.cfm';
eine andere Seite nach Frame B geladen. Das funktioniert auch. So jetzt möchte ich noch in diesem soeben geladenen Frame eine Grafik gegen eine ander austauschen. Das ganze sollte aber auch von Frame a aus passierern und zwar genau in dem selben onClick aufruf wie oben schon die Seite aufgerufen wurde. Das ganze versuche ich so:
parent.frames[1].images[verstehen_grundlagen].src='../../../images/navigation/btso_verstehen_grundlagen.gif';"

Ich versuche auf ein Bild mit dem Namen verstehen_grundlagen zuzugreifen. Er schreibt mir aber immer das dieses Bild undefiniert sei. Weis jemand weiter. Danke.im Archiv und der FAQ hab ich leider nix 100%iges dazu gefunden.

Gruß Jan

  1. Guude!

    Schau Dir doch mal das Beispiel unter http://selfhtml.teamone.de/javascript/beispiele/buttons.htm an. Kombiniert mit Deinem Wissen über Ansprechbarkeit einzelner Frames mittels Javascript hast Du alles, was Du zur Lösung des Problems brauchst...

    LG ausm Hesseland
    Lemmy

    1. Du meinst das ist nur möglich wenn für die neue Grafik zuvor eine Instanz des Grafikobjekts erzeugt wurde?!

      1. Guude!

        Du meinst das ist nur möglich wenn für die neue Grafik zuvor eine Instanz des Grafikobjekts erzeugt wurde?!

        Vielleicht geht es auch ohne, hab ich noch nicht probiert. Es ging mir aber bei dem Link eher darum, Dir eine Variante des Ansprechens von Bildern zu zeigen, die überall funktioniert, zumal Deine Variante so ja nicht funktioniert hatte. Aber Struppi hat Dir die Fehler ja schon zur Genüge erläutert.

        LG ausm Hesseland
        Lemmy

        1. Guude!

          Du meinst das ist nur möglich wenn für die neue Grafik zuvor eine Instanz des Grafikobjekts erzeugt wurde?!
          Vielleicht geht es auch ohne, hab ich noch nicht probiert.

          Habs eben probiert. Es geht auch ohne Instanz!!!

          Es ging mir aber bei dem Link eher darum, Dir eine Variante des Ansprechens von Bildern zu zeigen, die überall funktioniert, zumal Deine Variante so ja nicht funktioniert hatte. Aber Struppi hat Dir die Fehler ja schon zur Genüge erläutert.

          Richtig Fehler lag woanders.

          Trotzdem Danke.

  2. So ich hab ein Frame A und ein Frame B. In Frame A wird mit parent.frames[1].location='/website/navigation/diabetes_verstehen/nav_diabetes_verstehen.cfm';
    eine andere Seite nach Frame B geladen. Das funktioniert auch. So jetzt

    Das funktionier nur mit Javascript. Du solltest dir zumindest überlegen, das es durchaus möglich ist, das Leute ohne JS oder mit einer Firewall, die Skript ausfiltert unterwegs sein könnten (ich tute das z.b). Und die werde mit deinen Seite nicht viel Freude haben.

    möchte ich noch in diesem soeben geladenen Frame eine Grafik gegen eine ander austauschen. Das ganze sollte aber auch von Frame a aus passierern und zwar genau in dem selben onClick aufruf wie oben schon die Seite aufgerufen wurde. Das ganze versuche ich so:
    parent.frames[1].images[verstehen_grundlagen].src='../../../images/navigation/btso_verstehen_grundlagen.gif';"

    Das ist falsch, weil:

    1.) ist verstehen_grudlagen keine Variabel. Wenn du mal ein
    alert(verstehen_grudlagen); einbaust (das ergibt 'undefined' oder gar nichts), würdest du das merken.

    verstehn_grundlagen ist ein String und diese sind immer von hochkommas umgegeben:
    parent.frames[1].images["verstehen_grundlagen"].src (das funktioniert nicht!!!)

    2.) hat parent.frames[] wie jedes window keine Bilder, du willst das document ansprechen.
    parent.frames[1].document.images["verstehen_grundlagen"].src
    (das funktioniert auch nicht!!!)

    3.) Kannst du das document erst ansprechen, wenn es geladen ist. Dazu hast du zwei  Möglichkeiten. Du benutzt den onload Handler des Dokumentes oder du programmierst mit setTimeout eine Warteschleife, die probiert das document anzusprechen.

    Ich weiss nicht warum du das machst, insofern ist dir schwer zu sagen, was am besten wäre.

    Das mit der Objekt-Hirachie findest du übrigens auch in selfhtml.

    Struppi.

    1. Das funktionier nur mit Javascript.

      richtig.

      parent.frames[1].document.images["verstehen_grundlagen"].src usw.

      das klingt gut.

      3.) Kannst du das document erst ansprechen, wenn es geladen ist. Dazu hast du zwei  Möglichkeiten. Du benutzt den onload Handler des Dokumentes oder du programmierst mit setTimeout eine Warteschleife, die probiert das document anzusprechen.

      bevor ich das bild tausche lade ich mit
      parent.frames[1].location='/website/navigation/diabetes_verstehen/nav_diabetes_verstehen.cfm';
      die neue Seite!

      der ganze aufruf sieht dann praktisch so aus und müsste jetzt auch funktionieren:
      onClick:"
      parent.frames[1].location='/website/navigation/diabetes_verstehen/nav_diabetes_verstehen.cfm';
      parent.frames[1].document.images["verstehen_grundlagen"].src = 'fred.jpg'; "

      Ich weiss nicht warum du das machst, insofern ist dir schwer zu sagen, was am besten wäre.

      weil es es so gefordert ist.

      Das mit der Objekt-Hirachie findest du übrigens auch in selfhtml.

      ja ich weis. sorry hab das mit dem document überlesen. Und die Anführungszeichen war ein Flüchtigkeitsfehler.

      1. Das funktionier nur mit Javascript.

        richtig.

        Wie gesagt. Ich hatte gerade die letzte Wochen eine lang andauernde Diskussion, mit einer Layouterin, die unbedingt auf JS bestand. Nachdem der Entwurf fertig war, stellte sich raus das, der Auftraggeber durchaus wußte, dass die Hauptklientel (Krankenhäuser, Altersheime) ohne JS (Firewalls) surft. Obwohl ich dieses Argument ungefähr 10x geäußert hatte, war vorher das Flyout wichtiger als "ein paar die ohne JS surfen".
        Naja, ich hab die Arbeit jetzt abgebrochen.

        3.) Kannst du das document erst ansprechen, wenn es geladen ist. Dazu hast du zwei  Möglichkeiten. Du benutzt den onload Handler des Dokumentes oder du programmierst mit setTimeout eine Warteschleife, die probiert das document anzusprechen.

        bevor ich das bild tausche lade ich mit
        parent.frames[1].location='/website/navigation/diabetes_verstehen/nav_diabetes_verstehen.cfm';
        die neue Seite!

        Nein, damit stösst du den Ladevorgang an. Aber über's Internet kann das durchaus eine Weile dauern, auf jeden Fall zu lang, als das dein folgender Code auf das Bild zugreifen kann (Lokal kann das durchaus klappen)

        der ganze aufruf sieht dann praktisch so aus und müsste jetzt auch funktionieren:
        onClick:"
        parent.frames[1].location='/website/navigation/diabetes_verstehen/nav_diabetes_verstehen.cfm';
        parent.frames[1].document.images["verstehen_grundlagen"].src = 'fred.jpg'; "

        Ich weiss nicht warum du das machst, insofern ist dir schwer zu sagen, was am besten wäre.

        weil es es so gefordert ist.

        Ja das ist ja mal ein Argument.
        Ich wollte eigentlich nicht darüber diskutieren, sondern ich fragte mich, warum man ein Dokument mt einem Bild lädt um dann sofort das in dem Dokument enhtaltene Bild wieder weg zu machen. Das klingt mir nach einem unsauberen Konzept.

        Struppi.

        1. Nein, damit stösst du den Ladevorgang an. Aber über's Internet kann das durchaus eine Weile dauern, auf jeden Fall zu lang, als das dein folgender Code auf das Bild zugreifen kann (Lokal kann das durchaus klappen)

          STimmt hast Du wieder recht darum hab ich es jetzt so geschrieben:
          onClick:"
          parent.frames[1].document.images["verstehen_grundlagen"].src = 'fred.jpg'; "

          Ich muss ja nur das bild tauschen und nicht die Seite und das Bild. Also kann ich die Seite stehen lassen und das Bild ist somit auf jeden Fall geladen.

          weil es es so gefordert ist.

          Ja das ist ja mal ein Argument.
          Ich wollte eigentlich nicht darüber diskutieren, sondern ich fragte mich, warum man ein Dokument mt einem Bild lädt um dann sofort das in dem Dokument enhtaltene Bild wieder weg zu machen. Das klingt mir nach einem unsauberen Konzept.

          Nene ist schon ein sauberes Konzept. Das ganze ist auch nicht auf meinen Mist gewachsen. Ich muss es nur anpassen. Und im Nachhinein ist das immer schwierig. Das ganze ist ein Menü mit Mouseover usw. Und wenn ich jetzt von ner Contentseite nen Link betätige soll ers auf ne andere Seite bespringen und     gleichzeitig soll auch das menü an die richtige stelle springen. Darum der Aufwand. Ich weis hätte man das von vornherein geplant wäre das ganze besser und einfacher. Aber jetzt istr es nunmal so.

          So jetzt klappts auch. Hat nur noch einen Schönheitsfehler., Hoffe ich bekomm den auch noch weg. Wenn nicht melde ich mich nochmals. Danke.

          Gruß Jan