Andreas Stroppel: ab IE55: Bei Link in neuem Fenster>target bleibt ganzes Fenster

Hallo zusammen,

ich bin vor kurzem auf ein Problem bei Frames gestoßen, auf das ich mir keinen Reim machen kann. Bitte jetzt nicht gleich mit lesen aufhören. Ich bin mir ziemlich sicher, daß es sich um keine der "üblichen" Frame-Fragen handelt, da ich schon Stunden Google und das Forumsarchiv gewälzt habe.

Schonmal vorab, mein Problem konnte ich bis jetzt nur im IE55 und IE6 reproduzieren. Im IE4, IE50, NS4x(Windows), NS6(Windows), Opera511(Windows), NS47(Linux), Mozilla0921(Linux) und Konquerer läuft alles so, wie ich es erwarten würde.

Um es etwas einfacher erklären zu können, habe ich ein Beispiel vorbereitet:

http://www.stroppel-software.de/frameset.htm

Ich habe dort zwei Frames, wobei ich den linken jetzt mal "Navigationsframe" nenne und den rechten "Hauptframe". Wenn ich im Navigationsframe den Link anwähle wird im Hauptframe die Datei "rechts2.htm" geladen. Soweit alles normal.
Nun kann ich den Link im Navigationsframe ja auch in einem neuen Fenster öffnen (Stichwort "rechte Maustaste"). Dann krieg' ich die Datei "rechts2.htm" natürlich solo in einem neuen Fenster. Immer noch alles im grünen Bereich.
Ich kann jetzt im neuen Browserfenster mit dem Link wieder die Startseite "frameset.htm" laden und bekomme (schon wieder) natürlich das Frameset vom Anfang.
Beide Browserfenster sehen jetzt äußerlich gleich aus. In der Adresszeile steht ja auch dieselbe URL. Wenn ich jetzt allerdings im _neuen_ Browserfenster im Navigationsframe den Link anwähle, dann wird die Seite "rechts2.htm" _nicht_ im Hauptframe geladen, sondern im ganzen Browser, so als ob target="_top" angegeben wäre, ist es aber nicht, schließlich ist es ja immer noch dieselbe Seite.

War das jetzt irgendwie einigermaßen verständlich erklärt? Ich hoffe, daß mir jetzt trotz der umständlichen Erklärung jemand weiterhelfen kann, was hier schiefläuft. Gibt es eine Möglichkeit, wie ich erreichen kann, daß sich der IE55/IE6 für diesen Fall wieder so verhält, wie die anderen Browser?

In jedem Fall schon mal Danke, daß jemand überhaupt bis hierher gelesen hat. :-)

Gruß, Andreas

  1. Hallo Andreas,

    Um es etwas einfacher erklären zu können, habe ich ein Beispiel vorbereitet:

    http://www.stroppel-software.de/frameset.htm

    <staun>Ich hab es mal im IE 5.5 nachvollzogen und siehe da, Deine Beschreibung stimmt.</staun>

    Daraufhin hab ich es mal in einem anderen Frameset ausprobieren wollen, habe aber kein Frameset gefunden, das in dieser Weise verlinkt war. Ich vermute mal, Du willst Leuten, die per Suchmaschine auf eine Deiner Unterseiten kommen, eine Möglichkeit anbieten, Dein Frameset nachzuladen. Da ich nicht die geringste Ahnung habe, wie der IE zu diesem Verhaltten kommt (vielleicht "target" mitgecacht?), würde ich Dir, wenn ich richtig vermute, eine andere Lösung empfehlen.

    Schreib nochmal was

    Mathias Bigge

    1. Hallo Mathias,

      Um es etwas einfacher erklären zu können, habe ich ein Beispiel vorbereitet:
      http://www.stroppel-software.de/frameset.htm
      <staun>Ich hab es mal im IE 5.5 nachvollzogen und siehe da, Deine Beschreibung stimmt.</staun>

      Gott sei Dank *schweißvonderstirnwisch* bin ich nicht der Einzige. Ich hatte schon befürchtet, irgendwas total offensichtliches übersehen zu haben und mir dann 'ne Strafpredigt einzufangen. :-)

      Daraufhin hab ich es mal in einem anderen Frameset ausprobieren wollen, habe aber kein Frameset gefunden, das in dieser Weise verlinkt war. Ich vermute mal, Du willst Leuten, die per Suchmaschine auf eine Deiner Unterseiten kommen, eine Möglichkeit anbieten, Dein Frameset nachzuladen. Da ich nicht die geringste Ahnung habe, wie der IE zu diesem Verhaltten kommt (vielleicht "target" mitgecacht?), würde ich Dir, wenn ich richtig vermute, eine andere Lösung empfehlen.

      Mit der Suchmaschine hast du richtig getippt. Allerdings hätte ich zusätzlich auch noch ganz gerne, daß man auf meinen Seiten auch noch mit "Link in neuem Fenster öffnen" problemlos surfen kann, ohne immer die Navigation zu verlieren. Da müßte man in meinem Beispiel dann natürlich noch etwas JavaScript nachrüsten. Ich wollte aber erst mal nur das seltsame Verhalten demonstrieren.
      Mittlerweile habe ich gemerkt, daß man das sogar mit jedem beliebigen Frameset nachvollziehen kann. Z.B. auch hier:

      http://selfhtml.teamone.de/html/frames/anzeige/frames.htm

      Wenn man z.B. den Link "Über Frames" in einem neuen Fenster öffnet und dann im neuen Fenster per _manueller Eingabe_ obiger URL wieder auf die "Startseite" mit den Frames geht, werden auch wieder alle Links im ganzen Fenster geladen.
      Man kann sogar soweit gehen, daß man im neuen Fenster erst mal etwas durch die Gegend surft und auf andere Websites geht und wenn man dann wieder zurückkommt (alles immer im neuen Fenster), tritt auch dann noch dieser komische "Fehler" auf. Seltsam *grübel*

      Ich finde auch, daß deine und Patricks Vermutung, daß das neue Fenster sich den Target-Namen merkt, einleuchtend klingt. Könnte man in diesem Fall dann nicht mit JavaScript den Namen des neuen Fenster wieder ändern? Ich bin leider im Objektmodell von JavaScript noch nicht so fit, aber könnte das irgendwie sowas sein?

      if (self == top) {
        //Browserfenster einen anderen Namen geben
        top.name = "NOTfrRechts";

      //Auf Startseite umleiten und Datei nachladen.
        top.location.href = "frameset.htm?lade=rechts2.htm";
      }

      Danke jedenfalls schon mal, daß du dir die Zeit genommen hast, mein Problem mal nachzuvollziehen. Ist ja vielleicht doch nicht ganz einfach, sich erst mal in meine etwas umständliche Erklärung reinzudenken.

      Gruß, Andreas

  2. Hallo Andreas!

    http://www.stroppel-software.de/frameset.htm

    Ich habe dort zwei Frames, wobei ich den linken jetzt mal "Navigationsframe" nenne und den rechten "Hauptframe". Wenn ich im Navigationsframe den Link anwähle wird im Hauptframe die Datei "rechts2.htm" geladen. Soweit alles normal.
    Nun kann ich den Link im Navigationsframe ja auch in einem neuen Fenster öffnen (Stichwort "rechte Maustaste"). Dann krieg' ich die Datei "rechts2.htm" natürlich solo in einem neuen Fenster. Immer noch alles im grünen Bereich.
    Ich kann jetzt im neuen Browserfenster mit dem Link wieder die Startseite "frameset.htm" laden und bekomme (schon wieder) natürlich das Frameset vom Anfang.
    Beide Browserfenster sehen jetzt äußerlich gleich aus. In der Adresszeile steht ja auch dieselbe URL. Wenn ich jetzt allerdings im _neuen_ Browserfenster im Navigationsframe den Link anwähle, dann wird die Seite "rechts2.htm" _nicht_ im Hauptframe geladen, sondern im ganzen Browser, so als ob target="_top" angegeben wäre, ist es aber nicht, schließlich ist es ja immer noch dieselbe Seite.

    War das jetzt irgendwie einigermaßen verständlich erklärt? Ich hoffe, daß mir jetzt trotz der umständlichen Erklärung jemand weiterhelfen kann, was hier schiefläuft. Gibt es eine Möglichkeit, wie ich erreichen kann, daß sich der IE55/IE6 für diesen Fall wieder so verhält, wie die anderen Browser?

    OK, das von Dir geschilderte konnte ich ebenfalls (IE 5.5) nachvollziehen. Aber: es passiert nur dann, wenn man so vorgeht, wie Du es geschildert hast, nämlich wenn man das neue Fenster mit der Datei rechts2.htm über den Link im Naviframe mittels rechter Maustaste und "In neuem Fenster öffnen" wählt. Scheinbar wird der Fenstername des target-Attributs ("frRechts") da übernommen, so dass danach, wenn man in diesem Fenster das Frameset über den Link "hier geht's wieder..." geladen hat und im Naviframe dann normal den Link anklickt, die rechts2.htm im ganzen Fenster geladen wird: für den IE ist es dann das Fenster namens "frRechts".

    Aber das Problem tritt nur in diesem Fall auf. Wenn Du jetzt beispielsweise die IE-Tools hast, die den Kontextmenü der rechten Maustaste um 3 Optionen erweitern ("Link List" - zeigt eine Liste der Links auf der Seite; "Image List" - zeigt eine Liste der Grafiken auf der Seite; und "Open Frame in New Window" - öffnet ein neues Fenster aus einer Seite raus mit der Seite, auch von Frames aus) und Deine rechts2.htm über "Open Frame in new window" öffnest - oder wenn Du Deine rechts2.htm standalone aufrufst über einen Link aus einer ganz anderen Seite (wie es bei einem Suchmaschinentreffer der Fall wäre), dann hat das Fenster mit der rechts2.htm keinen Namen "frRechts" mehr und Dein Frameset "funktioniert" einwandfrei: die rechts2.htm wird nach dem Laden des Sets erneut im rechten "Hauptframe" geladen.

    Warum IE 5.5 und 6 nun so reagieren wie Du es geschildert hast, und also scheinbar dem neuen Fenster den im target definierten Namen übergeben, wenn man vom Naviframe heraus "in neuem Fenster öffnen" wählt, kann ich nicht sagen, und das müsste man weiter erforschen, mehr damit rumspielen, wofür ich leider nicht die Zeit im Moment habe.

    Der IE, besser gesagt: MicroSchrott ist eh komisch in Sachen neuen Fenster. Aus vielen Anwendungen heraus, aus denen man Links anklicken kann (zum Beispiel aus einer e-Mail in Outlook/Outlook Express) werden die Links scheinbar intern mit so etwas wie target=new geöffnet. Das führt dazu, dass wenn in einer email mehrere Links stehen, und man sie nacheinander klickt, alle im gleichen Fenster aufgehen anstatt jeder einzelne Link in einem neuen Fenster. Das ist bei manch einer Mail, wo wie erklärt und auswärts verwiesen wird mehr als ärgerlich. Auch kann es passieren, dass aus manchen Anwendungen heraus angeklickte Links ein zuvor geöffnetes Fenster "überschreiben" - zum Beispiel, wenn es die einzig geöffnete Browsersession war. Dies hat mich damals oft aus dem Chat herausgeworfen, als ich noch kein IRC-Client hatte und den Chat via der HTML-Datei mit dem Aplett besuchte ;-)

    Grüße,
    Patrick

    1. Hallo Patrick,

      OK, das von Dir geschilderte konnte ich ebenfalls (IE 5.5) nachvollziehen. Aber: es passiert nur dann, wenn man so vorgeht, wie Du es geschildert hast, nämlich wenn man das neue Fenster mit der Datei rechts2.htm über den Link im Naviframe mittels rechter Maustaste und "In neuem Fenster öffnen" wählt. Scheinbar wird der Fenstername des target-Attributs ("frRechts") da übernommen, so dass danach, wenn man in diesem Fenster das Frameset über den Link "hier geht's wieder..." geladen hat und im Naviframe dann normal den Link anklickt, die rechts2.htm im ganzen Fenster geladen wird: für den IE ist es dann das Fenster namens "frRechts".

      Stimmt. Das ganze passiert nur für genau diesen Fall. Deine Vermutung finde ich ziemlich einleuchtend. Mir ist mittlerweile sogar aufgefallen, daß man im _neuen_ Browserfenster sogar auf eine komplett andere Website(!) wechseln kann, z.B auch durch manuelle Eingabe einer anderen URL, und daß man dieses (Fehl)verhalten immer noch beobachten kann, wenn man dann wieder zu meinem Frameset zurückkommt. Das neue Fenster scheint sich den "neuen" Namen ziemlich hartnäckig zu merken.
      Ich hab' mal versucht, per JavaScript dem neuen Fenster einen anderen Namen zu verpassen für den Fall, daß es alleine geladen ist, war aber noch nicht sehr erfolgreich. Leider bin ich im Objektmodell noch nicht so fit. Weiß nicht, ob folgende Zeilen überhaupt Sinn machen:

      if (self == top) {
        //Browserfenster einen anderen Namen geben
        top.name = "NOTfrRechts";

      //Auf Startseite umleiten und Datei nachladen.
        top.location.href = "frameset.htm?lade=rechts2.htm";
      }

      [...] IE-Tools [...] "Open Frame in New Window" - öffnet ein neues Fenster aus einer Seite raus mit der Seite, auch von Frames aus [...]

      Dieses Feature der IE-Tools kannte ich noch gar nicht. Da muß ich mir die vielleicht doch mal installieren. Die Sache mit dem "Link in neuem Fenster öffnen" mache ich ziemlich häufig und wenn da Frames erhalten blieben, wär' das klasse.

      Warum IE 5.5 und 6 nun so reagieren wie Du es geschildert hast, und also scheinbar dem neuen Fenster den im target definierten Namen übergeben, wenn man vom Naviframe heraus "in neuem Fenster öffnen" wählt, kann ich nicht sagen, und das müsste man weiter erforschen, mehr damit rumspielen, wofür ich leider nicht die Zeit im Moment habe.

      Klar, kenn' ich :-). Danke auf jeden Fall für das Feedback. Ich hatte schon befürchtet, daß ich Tomaten auf den Augen hab' und irgendwas total offensichtliches übersehe.

      Gruß, Andreas