JavaScript - Referenz Browserfenster nach Name? [Duplikat]

7

Wenn Sie ein neues Browserfenster erstellen, geben Sie ihm einen Namen wie folgt:

%Vor%

Später können Sie auf das Fenster von der Variablen zugreifen, die Sie gespeichert haben:

%Vor%

Ist es möglich, auf ein Fenster mit seinem Namen ( googleWindow ) anstatt auf die Variable?

zuzugreifen und es zu bearbeiten?

Wenn es nicht möglich ist, was ist der Punkt, der Windows-Namen gibt?

    
Jake Wilson 20.02.2012, 16:40
quelle

5 Antworten

17

Nein. Ohne einen Verweis auf das Fenster können Sie es nicht erneut finden, namentlich oder anderweitig. Es gibt keine Sammlung von Fenstern.

UPDATE: So können Sie es selbst tun:

%Vor%

Nun wird openWindow immer das Fenster öffnen, und wenn das Fenster bereits existiert, wird es die angegebene URL in diesem Fenster laden und einen Verweis auf dieses Fenster zurückgeben. Jetzt können Sie auch findWindow :

implementieren %Vor%

Gibt das Fenster zurück, wenn es existiert, oder undefined .

Sie sollten auch closeWindow haben, also behalten Sie keine Referenzen auf Fenster, die Sie selbst geöffnet haben:

%Vor%
  

Wenn es nicht möglich ist, was ist der Punkt, der Windows-Namen gibt?

Der Name wird intern vom Browser zum Verwalten von Fenstern verwendet. Wenn Sie window.open mit demselben Namen aufrufen, wird kein neues Fenster geöffnet, sondern die URL in das zuvor geöffnete Fenster geladen. Es gibt ein paar weitere Dinge von MDN window.open () :

  

Wenn bereits ein Fenster mit dem Namen strWindowName vorhanden ist, wird strUrl in das vorhandene Fenster geladen. In diesem Fall ist der Rückgabewert der Methode das vorhandene Fenster und strWindowFeatures wird ignoriert. Die Angabe einer leeren Zeichenfolge für strUrl ist eine Möglichkeit, einen Verweis auf ein geöffnetes Fenster anhand seines Namens abzurufen, ohne die Position des Fensters zu ändern. Um ein neues Fenster bei jedem Aufruf von window.open () zu öffnen, verwenden Sie den speziellen Wert _blank für strWindowName.

    
Linus Gustav Larsson Thiel 20.02.2012, 16:46
quelle
14

Linus G Thiel sagt, dass du das nicht in Javascript machen kannst. Seltsamerweise listet seine Antwort einen Auszug aus MDN auf, der klingt, als würde er sagen, wie das geht. Die Zeile war:

%Vor%

Ich habe es versucht und es funktioniert für mich.

%Vor%

Dies funktioniert jedoch nur, wenn Sie das Fenster von Ihrer Seite aus geöffnet haben. Und wenn das stimmt, dann ist es sinnlos, ein Fenster zu machen. Nur um die Referenz zu bekommen. In diesem Fall hast du wahrscheinlich schon die Referenz.

    
Mark Goldfain 31.01.2013 22:24
quelle
3

Die Lösung von Mark Goldfain funktioniert nicht mehr so ​​wie am 9/8/2015

Gemäß dieser w3-Spezifikation ,

  

Wenn das erste Argument die leere Zeichenfolge ist, muss das Argument url   als "etwa: leer" interpretiert werden.

Ich glaube, das ist ein Unterschied zwischen HTML4 und HTML5.

IE und Chrome haben dieses Verhalten aktualisiert, um dieser Spezifikation zu entsprechen, während Marks Lösung immer noch auf FF funktioniert (obwohl ich mir vorstelle, dass sie das bald beheben werden). Vor ein paar Wochen funktionierte das auf allen gängigen Browsern.

Mein besonderes Problem betraf die Fenstersteuerung während der Navigation, wobei das Öffnen des Chat-Fensters ebenso wie der Großteil des Codes auf der Seite schwarz umrandet ist. Meine Lösung bestand darin, das leere Fenster mit der Referenz aufzurufen, bevor die Funktion aufruft, die das Chat-Fenster aufgerufen hat. Wenn der Benutzer von der Seite weg navigierte, konnte ich mich darauf verlassen, dass andere Fenster als das ursprüngliche Elternteil das untergeordnete Fenster nicht ändern dürfen, und so konnte ich Mark Goldfains Lösung unverändert verwenden.

    
John Hartung 08.09.2015 19:06
quelle
3

Die von Mark Goldfain zur Verfügung gestellte Lösung kann bearbeitet werden, um mit den neuen Browsern zu arbeiten, zumindest um ein Fenster zu öffnen und Behalte einen Verweis zwischen den Seitenauffrischungen.

%Vor%

oder im Funktionsformat

%Vor%     
Timo Huovinen 23.12.2015 13:49
quelle
0

Am Ende habe ich Folgendes verwendet:

%Vor%

wurde dann referenziert mit:

%Vor%     
Jaynesify 15.03.2017 17:27
quelle

Tags und Links