Jens Wollschläger: target=_top per perl-header erzwingen

Hallo Forum!
Ich hab da ein Problem - und zwar möchte ich von einem Framefenster aus ein Perl-Programm aufrufen und dieses soll dann eine .htm Datei aufrufen, die auf dem ganzen Bildschirm zu sehen sein soll. Mit Netscape geht's so wies jetzt ist, der Internet Explorer streikt. Gibts da ne Lösung für? Wenn es nicht mit Perl geht, würde ich auch einen *automatischen* redirect per Javascript oder einen Metaredirect verwenden. Nur weiss ich da auch nicht, wie ich da ein target=_parent oder so einbauen kann. Per Html wäre es kein Problem, aber ich möchte gerne umgehen, daß man noch einmal überflüssigerweise auf einen Link klicken muss nach dem Output des Perl-programms.
Hier also der Header aus der Perl Datei:

print "HTTP/1.0 302 Found\n";
print "Window-target: _top\n";
print "Location: http://localhost/Wald.htm\n\n";

Vielen Dank für Eure Hilfe..........Jens

  1. Hier also der Header aus der Perl Datei:
    print "HTTP/1.0 302 Found\n";
    print "Window-target: _top\n";
    print "Location: http://localhost/Wald.htm\n\n";

    Nur so als Idee: Im welchem HTTP-Release gibt es dieses Window-target? Hast Du schon mal probiert, wie die Sache mit einem HTTP/1.1-Header aussehen würde? Vielleicht kapiert der MSIE dann ja mehr?

    1. Hi,

      print "Window-target: _top\n";

      Nur so als Idee: Im welchem HTTP-Release gibt es dieses Window-target? Hast Du schon mal probiert, wie die Sache mit einem HTTP/1.1-Header aussehen würde? Vielleicht kapiert der MSIE dann ja mehr?

      soweit ich weiß ist der Header rein Netscape-proprietär und funktioniert daher mit dem MSIE auch dann nicht, wenn man sich auf den Kopf stellt, eine Frikadelle ans Knie nagelt und so lange dreht, bis man Radio Regenbogen empfängt. Der Header hat dann in etwa den gleichen Sinngehalt wie die eben beschriebene Aktion :-)

      Übrigens haben die Header mit Perl nichts zu tun, sondern nur mit HTTP, aber das nur nebenbei.

      Cheatah

      1. Hi!

        Startest Du Dein Script mittels Link oder Submit? Als Link sollte es kein Problem sein:
        <a href="/cgi-bin/mycgi.pl" target="_parent">Start CGI</a>.

        Ansonsten findet man auf http://cgi.xwolf.com/ unter FAQ 1 zu dem Thema folgendes:

        <cite>
        Kann ich verschiedene Netscape-Frames addressieren?

        Ja. Das Sie CGI benutzen macht keinen Unterschied: Benutzen Sie "target=" genauso wie auch in ein normales HTML-Dokument. Alternativ kann das Skript ein "Window-target" ausgeben. Lesen Sie hierzu auch die Seiten von Netscape; Diese beantworten alle Fragen zu Frames.

        Kann ich Ausgaben auf einmal zu verschiedenen Frames schreiben?

        Ein einziges CGI Skript kann immer nur in ein einziges Frame schreiben. Wie auch immer, diese Einschränkung kann man umgehen, wenn man mehrere Skripte benutzt. Das erste Skript (Z.B. die URL des Submit-Buttons) schreibt ein Frameset, typischerweise mit dem Ziel "_parent" oder "_top". Der HTML-Code einer oder aller Frames kann dabei durch das CGI-Skript ausgegeben werden. Dies Vorgehen ist allerdings nicht zu empfehlen. Falls Sie wollen, das das Design Ihrer Seite durch den User bestimmt werden kann, sollten Sie besse versuchen, dies auf einer höheren Ebene zu machen.

        Beachten Sie:

        1.Vergessen Sie nicht, die URLs zu escapen.
        2.Diese Technik verursacht auf dem Server die Anfragen von vielen zum Teil gleichzeitigen Requests. Die Folge ist, daß Ihr Speicherverbrauch stark wächst. Insbesonders, wenn Sie mit Perl programmiert haben.

        Eine gute Alternative ist es, Javaskript hier zu benutzen. Es gibt hierzu schon einige gute Lösungen auf entsprechenden JAVA-Sites. Bedenken Sie nur, daß Javaskript je nach Browser unterschiedliche Ausgaben machen kann, bzw. auch bei einigen Benutzern ausgeschaltet ist.
        </cite>

        Gruß Frank

        1. Hallo! Einen Link, der einen target=_top schon eingebaut hat, kann ich leider nicht benutzen, was ja wohl die einfachste Lösung wäre. Die Rückgabe ist nämlich Teil eines Chats, der nur auf den Chatbefeht .join Neuerraum reagieren soll und für den jew. user einen neuen Frame mit dem neuen Raum aufmachen soll. Ansonsten soll der alte Frame ja bestehen bleiben. Sux, nicht wahr?
          Ich wäre immer noch dankbar über eine Möglichkeit, per *automatischen* Javascriptbefehl ein target=_top zu erzwingen. Der würde nämlich dann nach der Rückgabe des Perl-programms den user *automatisch* auf eine neue Seite lenken. Vielleicht gibt's ja ne möglichkeit. Ich hab schon viel mit location.href rumprobiert, aber wie ich einen target=_top da reinkrieg ist mir immer noch nicht bekannt.
          Ok, danke schonmal........Jens

          Startest Du Dein Script mittels Link oder Submit? Als Link sollte es kein Problem sein:
          <a href="/cgi-bin/mycgi.pl" target="_parent">Start CGI</a>.

          1. Hi,

            Ich wäre immer noch dankbar über eine Möglichkeit, per *automatischen* Javascriptbefehl ein target=_top zu erzwingen. Der würde nämlich dann nach der Rückgabe des Perl-programms den user *automatisch* auf eine neue Seite lenken. Vielleicht gibt's ja ne möglichkeit. Ich hab schon viel mit location.href rumprobiert, aber wie ich einen target=_top da reinkrieg ist mir immer noch nicht bekannt.

            ach, wenn's nur das ist, solltest Du mal die FAQ unter http://www.mintert.com/javascript/de.comp.lang.javascript.html lesen, genauer gesagt den Bereich "mehr Fenster und Frames - Kommunikation zwischen ...". In diesem Fall lautet die Lösung top.location.href.

            Cheatah

  2. Hallo Jens,

    Du kannst natürlich in die Ausgabe ein Javascript einbauen, das die Seite "always on top" darstellt - eleganter ist aber natürlich, das target=_top in den Link einzubauen. Wenn in Deinem Frame alle Links on _top gehen sollen, setz in den head der Datei ein <base target="_top">.

    Gruß
    Daniel

    Hallo Forum!
    Ich hab da ein Problem - und zwar möchte ich von einem Framefenster aus ein Perl-Programm aufrufen und dieses soll dann eine .htm Datei aufrufen, die auf dem ganzen Bildschirm zu sehen sein soll. Mit Netscape geht's so wies jetzt ist, der Internet Explorer streikt. Gibts da ne Lösung für? Wenn es nicht mit Perl geht, würde ich auch einen *automatischen* redirect per Javascript oder einen Metaredirect verwenden. Nur weiss ich da auch nicht, wie ich da ein target=_parent oder so einbauen kann. Per Html wäre es kein Problem, aber ich möchte gerne umgehen, daß man noch einmal überflüssigerweise auf einen Link klicken muss nach dem Output des Perl-programms.
    Hier also der Header aus der Perl Datei:

    print "HTTP/1.0 302 Found\n";
    print "Window-target: _top\n";
    print "Location: http://localhost/Wald.htm\n\n";

    Vielen Dank für Eure Hilfe..........Jens

    1. Hallo Daniel! Genau sowas würde ich brauchen! Weil der der script teil eines chats ist, soll er nicht immer ein komplett neues frameset aufmachen, sondern nur wenn der user in einen neuen chatraum will und .join Namedeschatraums eingetippt hat. Daher fallen alle Lösungen, die bereits im Link das target drin haben, raus.
      Ein Javascript, das bei der Ausgabe die Seite *automatisch* auf eine neue URL umleitet, die den ganzen Bildschirm dann ausfüllt, wäre schon cool. gibts da einen parameter für location.href, der ein target=_top erzwingt?

      Gruß... Jens

      Hallo Jens,

      Du kannst natürlich in die Ausgabe ein Javascript einbauen, das die Seite "always on top" darstellt - eleganter ist aber natürlich, das target=_top in den Link einzubauen. Wenn in Deinem Frame alle Links on _top gehen sollen, setz in den head der Datei ein <base target="_top">.