Steve01: Image austauschen - in einem anderen Fenster

Hallo,

habe folgendes Problem: Ich habe ein Frameset frame.htm mit zwei Bereichen definiert: Top und Main.

<frameset rows="32,*" border="0"">
<frame src="menue.htm" name="menue" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" noresize>
<frame src="index.htm" name="main" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto" noresize>
</frame>

Diese Frameset zeige ich als PopUpFenster mit folgendem Aufruf an.

win = window.open("frame.htm","win",width=720,height=540;);

So weit so gut.

Nun habe ich in index.htm einen Link definiert, der ein Perl-Skript aufruft.

Diese Skript soll nun etwas prüfen und wenn alles o.k. ist soll eine Graphik in index.htm mittels dem DOCUMENT-Objekt ausgetauscht werden.

Nun habe ich das Problem, dass ich die Graphik nicht ansprechen kann. Perl muss ja was an den Browser liefern: ich erzeuege also ein neues HTML-Dokument, lasse die Prüfroutine ablaufen und schliesse das erzeugte Dokument wieder.

Weiss jemand einen Tip wie ich über Perl/Javaskript die Grahik inm index.htm austauschen kann?

Danke,

Steve01

  1. Hallo.

    Nun habe ich das Problem, dass ich die Graphik nicht ansprechen kann. Perl muss ja was an den Browser liefern: ich erzeuege also ein neues HTML-Dokument, lasse die Prüfroutine ablaufen und schliesse das erzeugte Dokument wieder.

    Richtig. und dabei wird dir auch JavaScript nicht viel helfen können. Die einzige Möglichkeit wird sein, index.htm neu zu laden, oder die Prüfroutinen (falls überhaupt möglich) vollständig mit JavaScript zu machen.
    Eine etwas unelegante Möglichkeit könnte trotzdem bestehen:
    Wenn du eine Art blinden Frame einsetzt und in diesen die Ausgabe deines perl-scripts leitest (mittels target) könntest du dort je nach Ergebnis einen JavaScript bereich ausführen, der das Bild ändert.
    Dass müsste dann so gehen:

    parent.frames.main.getElementById("Bildid").src = "neue_Bildurl";

    Ich bin davon ausgeganen, dass deine Framestruktur dann so aussieht:

    <frameset rows="32,*,1" border="0"">
      <frame src="menue.htm" name="menue" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" noresize>
      <frame src="index.htm" name="main" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto" noresize>
      <frame src="blank.htm" name="blindframe" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto" noresize>
    </frame>

    und der code in blindframe geladen wird.

    Grüsse,
      christian

    1. Hallo.
      Dass müsste dann so gehen:

      parent.frames.main.getElementById("Bildid").src = "neue_Bildurl";

      Hi Christian,

      sorry das ich mich erst jetzt für deine Hilfe bedanke! Diese Weg habe ich schon versucht aber es klappt nicht. IE meldet, das das Objekt nicht existiert.

      Da ich ja das Frame so öffne,

      win = window.open("frame.htm","win",width=720,height=540;);

      habe ich auch versucht, in die Anweisung den Fensternamen einzufügen.

      Leider geht's immer noch nicht.

      Trotzdem vielen Dank !

      Steve01

      1. Hallo.
        Dass müsste dann so gehen:

        parent.frames.main.getElementById("Bildid").src = "neue_Bildurl";

        Da ich ja das Frame so öffne,
        win = window.open("frame.htm","win",width=720,height=540;);
        habe ich auch versucht, in die Anweisung den Fensternamen einzufügen.

        Nochmal ganz eindeutig: in welchem Fenster und welchem Frame ist der Link, der das Testskript aufruft notiert? Ich bin davon ausgegangen, dass du das Frameset

        <frameset rows="32,*" border="0"">
        <frame src="menue.htm" name="menue" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" noresize>
        <frame src="index.htm" name="main" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto" noresize>
        </frame>

        in einen Popup aufrufst. in diesem Fall müsstest du nur den Link in der Index.htm so gestalten, dass er mittels target in den blindframe zielt (target="blindframe").
        die Datei, die du in die blindframe lädst erhält im Erfolgsfall einen Scripteil z.B. so:
        <script type="text/javascript">
        <!--
          parent.main.document.getElemetById("BildID").src = neueURL;
        //-->
        </script>
        Dieser Ändert sobald er geladen wird das bild im main-Frame ab. Das sich das ganze in einem Popup abspielt ist dabei völlig egal.

        Grüsse,
          Christian

        1. Hi Christian,

          ich verstehe nicht genau was du meinst. Ich fasse die Dinge noch einmal kurz zusammen.

          Ich habe folgendes Frame:
          <frameset rows="32,*" border="0"">
          <frame src="menue.htm" name="menue" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" noresize>
          <frame src="index.htm" name="main" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto" noresize>
          </frame>

          Der Inhalt dieser Datei index.htm ist eine Tabelle mit einzelnen Graphiken. Klickt der User nun ein Bild an wird eine Perl-Routine augerufen. Diese soll etwas prüfen und dann das jeweilige Bild neu nachladen.

          Der Aufruf erfolgt mit
          <a href="script.pl" target="_blank"><img src="img1.jpg" name="img1" width="116" height="120"></a>

          Ich rufe den Link mit target="_blank" auf, damit der Inhalt der von index.htm nicht verschwindet.

          Nun erzeuge ich mit Perl ein neues HTML-Dok und versuche die JavaSkript-Routine zum Auswechseln des Bildes zu starten. Leider ohne Erfolg.

          Ah, ich glaube jetzt, ich weiss  was du meinst. Ich soll statt target="_blank" target="blindFrame" verwenden. Ich werde es mal testen.

          Bye,

          Steve01

        2. Hi Christian,

          ich habe es hinbekommen. Vielen Dank mit dem Blind-Frame.

          Ach, ja die guten aletn Frames. Ich möchte nicht auf diese verzichten müssen ;-)

          Bye,
          Steve01