Klawischnigg: Geöffneten Tab oder Fenster wie ansprechen?

Hi there,

vielleicht steh' ich ja nur auf der Leitung aber ich habe folgendes Problem:

wenn ich ein neues Fenster mit window.open öffne, erhalte ich eine eine Refernz darauf, mit der ich das Fenster manipulieren oder schliessen oder was weiss ich kann.

Wenn das Fenster aber geöffnet wird durch das Abschicken eines Formulars in der Form:

<form action="irgendwas.php" target="irgendeinfenstername"> erhalte ich diese Referenz nicht. Kann man es trotzdem durch Javascript ansprechen oder seh' ich wiedereinmal den Wald vor lauter Bäumen nicht?

  1. Hallo,

    wenn ich ein neues Fenster mit window.open öffne, erhalte ich eine eine Refernz darauf, mit der ich das Fenster manipulieren oder schliessen oder was weiss ich kann.

    Wenn das Fenster aber geöffnet wird durch das Abschicken eines Formulars in der Form:

    <form action="irgendwas.php" target="irgendeinfenstername"> erhalte ich diese Referenz nicht. Kann man es trotzdem durch Javascript ansprechen oder seh' ich wiedereinmal den Wald vor lauter Bäumen nicht?

    nein, das ist tatsächlich nicht so ganz selbsterklärend: Wenn das Fenster/Tab einmal geöffnet ist und durch die target-Angabe einen Namen hat, kannst du nochmal window.open() anwenden, und den bereits existierenden Fensternamen angeben. Dann wird kein neues Fenster geöffnet, sondern du bekommst eine Referenz auf das bereits existierende.

    Ciao,
     Martin

    --
    Ich bin 30. Ich demensiere apokalyptisch.
      (Orlando)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Liebe Mitdenker,
      liebe Wissende,
      liebe Neugierige,

      ja!

      nein, das ist tatsächlich nicht so ganz selbsterklärend: Wenn das Fenster/Tab einmal geöffnet ist und durch die target-Angabe einen Namen hat, kannst du nochmal window.open() anwenden, und den bereits existierenden Fensternamen angeben. Dann wird kein neues Fenster geöffnet, sondern du bekommst eine Referenz auf das bereits existierende.

      Ist eigentlich der Fehler in den Browsern repariert?
      Man durfte früher nicht denselben Bezeichnertext als Fensternamen benutzen, den man für die Variable in JavaScript benutzt hat. Dann stürtze das JavaScript ab.

      Spirituelle Grüße
      Euer Robert

      --
      Möge der Forumsgeist wiederbelebt werden!
      1. Hallo,

        Ist eigentlich der Fehler in den Browsern repariert?
        Man durfte früher nicht denselben Bezeichnertext als Fensternamen benutzen, den man für die Variable in JavaScript benutzt hat. Dann stürtze das JavaScript ab.

        keine Ahnung, davon höre ich zum ersten Mal. Könnte aber sein, dass das kein Bug ist, sondern eine Konsequenz der richtigen[tm] Implementierung. Meinst du ungefähr sowas:

        var popup = window.open("popup", "http://example.org/next.html");

        Angenommen, diese Anweisung steht im globalen Scope, dann wird popup natürlich zu einer Eigenschaft des window-Objekts. Werden mit window.open() geöffnete Fenster vielleicht sowieso als Objekte ans window-Objekt gebunden? Wenn ja, dann wäre es logisch, dass es hier zu einem Konflikt kommt. - Wie "zickig" die JS-Engine darauf reagieren darf, ist wieder eine andere Frage.

        So long,
         Martin

        --
        Ich stehe eigentlich gern früh auf.
        Außer morgens.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Moin Martin,

          Werden mit window.open() geöffnete Fenster vielleicht sowieso als Objekte ans window-Objekt gebunden?

          Nein.

          LG,
           CK

    2. Hi there,

      nein, das ist tatsächlich nicht so ganz selbsterklärend: Wenn das Fenster/Tab einmal geöffnet ist und durch die target-Angabe einen Namen hat, kannst du nochmal window.open() anwenden, und den bereits existierenden Fensternamen angeben. Dann wird kein neues Fenster geöffnet, sondern du bekommst eine Referenz auf das bereits existierende.

      Guter Gedanke, hätt' ich selbst drauf kommen können. Danke!

    3. Hi there,

      nein, das ist tatsächlich nicht so ganz selbsterklärend: Wenn das Fenster/Tab einmal geöffnet ist und durch die target-Angabe einen Namen hat, kannst du nochmal window.open() anwenden, und den bereits existierenden Fensternamen angeben. Dann wird kein neues Fenster geöffnet, sondern du bekommst eine Referenz auf das bereits existierende.

      Tja, leider, zumindest der Chrome macht ein neues Fenster auf. Dem ist das wurscht, daß es schon ein Fenster mit diesem Namen gibt. Sehr merkwürdig, ich muss das offenbar noch eingehender analysieren.

      Weisst Du ob es theoretisch eine Möglichkeit gibt, überhaupt abzufragen, ob es ein bestimmtes Fenster/Tab (das eben nicht mit window.open, aber vom selben Skript geöffnet wurde) bereits gibt? Fremde Fenster oder Tabs kann man wegen Cross-Sidescripting klarerweise nicht abfragen aber das wäre ja hier nicht der Fall...

      1. Tja, leider, zumindest der Chrome macht ein neues Fenster auf. Dem ist das wurscht, daß es schon ein Fenster mit diesem Namen gibt. Sehr merkwürdig, ich muss das offenbar noch eingehender analysieren.

        Gelöst - war ein Timing-Problem. Wenn man eine Zehntelsekunde oder so wartet, bis man window.open anwendet, dann funktioniert Deine Lösung...

        1. Liebe Mitdenker,
          liebe Wissende,
          liebe Neugierige,

          ja!

          Tja, leider, zumindest der Chrome macht ein neues Fenster auf. Dem ist das wurscht, daß es schon ein Fenster mit diesem Namen gibt. Sehr merkwürdig, ich muss das offenbar noch eingehender analysieren.

          Gelöst - war ein Timing-Problem. Wenn man eine Zehntelsekunde oder so wartet, bis man window.open anwendet, dann funktioniert Deine Lösung...

          Du musst ja wenigstens die Zeit bis zur NSA und zurück abwarten ;-P

          Spirituelle Grüße
          Euer Robert

          --
          Möge der Forumsgeist wiederbelebt werden!