Ich habe ein Auswahlfeld, das anruft, window.open(url)
wenn ein Element ausgewählt wird. Firefox öffnet die Seite standardmäßig in einem neuen Tab. Ich möchte jedoch, dass die Seite in einem neuen Fenster geöffnet wird, nicht in einem neuen Tab.
Wie kann ich das erreichen?
javascript
firefox
Adam
quelle
quelle
Antworten:
Geben Sie dem Fenster einen 'specs'-Parameter mit Breite / Höhe. Sehen Sie hier für alle möglichen Optionen.
Wenn Sie eine Breite / Höhe angeben, wird diese in einem neuen Fenster anstelle einer Registerkarte geöffnet.
quelle
Sie müssen keine Höhe verwenden, stellen Sie nur sicher, dass Sie verwenden
_blank
. Ohne diese wird sie in einer neuen Registerkarte geöffnet.Für ein leeres Fenster:
Für eine bestimmte URL:
quelle
location=0
ist dies erforderlich, wenn JS über eine Schaltfläche oder ein Ankerelement aufgerufen wird.location=0
der Parameter. Ich würde auch vorschlagen, das Fenster zu benennen, anstatt das_blank
Ziel zu verwenden, damit dasselbe Fenster erneut verwendet wird, wenn der Benutzer mehrmals auf das Element klickt, das das Popup öffnet, und mit dem es verkettet wird,focus()
sodass bereits ein geöffnetes Popup den Fokus erhält:window.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
Ich kann mich irren, aber soweit ich weiß, wird dies durch die Browsereinstellungen des Benutzers gesteuert, und ich glaube nicht, dass dies überschrieben werden kann.
quelle
Versuchen:
Ich habe einen Code, der das tut, was Sie sagen, aber es enthält viele Parameter. Ich denke, das ist das absolute Minimum. Lass es mich wissen, wenn es nicht funktioniert, werde ich den Rest posten.
quelle
OK, nachdem ich viele Tests gemacht habe, hier meine Schlussfolgerung:
Wenn Sie durchführen:
oder was auch immer Sie in das Zielfeld eingeben, dies ändert nichts: Die neue Seite wird auf einer neuen Registerkarte geöffnet (also abhängig von den Benutzereinstellungen).
Wenn Sie möchten, dass die Seite in einem neuen "echten" Fenster geöffnet wird, müssen Sie zusätzliche Parameter eingeben. Mögen:
Nach dem Testen scheint der zusätzliche Parameter, den Sie verwenden, keine Rolle zu spielen: Dies ist nicht die Tatsache, dass Sie "diesen Parameter" oder "diesen anderen" eingeben, die das neue "echte Fenster" erstellen, sondern die Tatsache, dass es neue Parameter gibt ).
Aber etwas ist verwirrt und kann viele falsche Antworten erklären:
Diese:
Und das:
wird NICHT das gleiche Ergebnis geben.
Im ersten Fall wird beim Öffnen einer Seite ohne zusätzliche Parameter eine neue Registerkarte geöffnet . In diesem Fall wird aufgrund des von Ihnen angegebenen Namens auch der zweite Anruf auf dieser Registerkarte geöffnet .
Im zweiten Fall, wenn Ihr erster Aufruf mit zusätzlichen Parametern erfolgt, wird die Seite in einem neuen " echten Fenster " geöffnet . Und in diesem Fall wird der zweite Aufruf, auch wenn er ohne den zusätzlichen Parameter erfolgt, auch in diesem neuen " echten Fenster " geöffnet ... aber auf derselben Registerkarte!
Dies bedeutet, dass der erste Aufruf wichtig ist, da entschieden wird, wo die Seite platziert werden soll.
quelle
Das solltest du nicht brauchen. Ermöglichen Sie dem Benutzer, die gewünschten Einstellungen vorzunehmen.
Firefox macht das standardmäßig, weil das Öffnen einer Seite in einem neuen Fenster ärgerlich ist und eine Seite dies niemals dürfen sollte, wenn dies vom Benutzer nicht gewünscht wird. (Mit Firefox können Sie Registerkarten in einem neuen Fenster öffnen, wenn Sie dies so einstellen.)
quelle
Sie könnten folgende Funktion ausprobieren:
Der HTML-Code für die Ausführung:
quelle
popup.location = URL;
? Derwindow.open()
Aufruf sollte es für die richtige URL öffnen und ist in Ihrem CodebeispielURL
nicht definiert, sodass auf das experimentelle (und nicht allgemein unterstützte) URL-Objekt zurückgegriffen wird . Während es umstritten ist, es dafür zu verwenden, bin ich neugierig, was die Motive für seine Verwendung hier sind?Der Schlüssel sind die Parameter:
Wenn Sie liefern Parameter [Height = „“, width = „“], dann wird es in einem neuen Fenster öffnen.
Wenn Sie KEINE Parameter angeben, wird diese in einer neuen Registerkarte geöffnet.
Getestet in Chrome und Firefox
quelle
Interessanterweise stellte ich fest, dass eine leere Zeichenfolge (im Gegensatz zu einer Nullzeichenfolge oder einer Liste von Eigenschaften) für das dritte Attribut von window.open in einer neuen Registerkarte für Chrome, Firefox und IE geöffnet wird. Bei Abwesenheit war das Verhalten anders.
Das ist also mein neuer Anruf:
quelle
versuchen Sie diese Methode .....
quelle
Für mich war die Lösung zu haben
im 3. Parameter. Getestet auf dem neuesten FF / Chrome und einer alten Version von IE11
Der vollständige Methodenaufruf, den ich verwende, ist unten (da ich gerne eine variable Breite verwende):
quelle
Ich habe es gerade mit IE (11) und Chrome (54.0.2794.1 Canary SyzyASan) versucht:
... und es öffnete sich in einem neuen Fenster.
Was bedeutet, dass Clint Pachl es richtig gemacht hat, als er sagte, dass die Angabe eines Parameters dazu führt, dass das neue Fenster geöffnet wird.
- und anscheinend muss es kein legitimer Parameter sein!
(YMMV - wie gesagt, ich habe es nur an zwei Stellen getestet ... und das nächste Upgrade könnte die Ergebnisse auf jeden Fall ungültig machen.)
ETA: Ich habe es gerade bemerkt - im IE hat das Fenster keine Dekorationen.
quelle
Beantwortet hier . Aber poste es noch einmal als Referenz.
window.open()
wird nicht in der neuen Registerkarte geöffnet, wenn dies beim tatsächlichen Klickereignis nicht der Fall ist. In dem angegebenen Beispiel wird die URL beim tatsächlichen Klickereignis geöffnet. Dies funktioniert, sofern der Benutzer über die entsprechenden Einstellungen im Browser verfügt.Wenn Sie versuchen, einen Ajax-Aufruf innerhalb der Klickfunktion auszuführen und bei Erfolg ein Fenster öffnen möchten, stellen Sie sicher, dass Sie den Ajax-Aufruf mit festgelegter
async : false
Option ausführen.quelle
Ich denke, es ist kein Problem mit den HTML-Zieleigenschaften, aber Sie haben die Option "Neue Fenster in einem neuen Tab öffnen" im Menü "Tab" im Firefox-Menü "Optionen" deaktiviert. Überprüfen Sie es und versuchen Sie es erneut.
quelle
Ich hatte dieselbe Frage, fand aber eine relativ einfache Lösung dafür.
In JavaScript habe ich nachgefragt
window.opener !=null;
, ob das Fenster ein Popup ist. Wenn Sie einen ähnlichen Erkennungscode verwenden, um festzustellen, ob das Fenster, in dem Ihre Site gerendert wird, ein Popup ist, können Sie es einfach "deaktivieren", wenn Sie ein "neues" Fenster mit dem neuen Windows-JavaScript öffnen möchten .Setzen Sie dies einfach oben auf Ihre Seite, um immer ein "neues" Fenster zu sein.
Ich verwende dies auf der Anmeldeseite meiner Website, damit Benutzer kein Popup-Verhalten erhalten, wenn sie ein Popup-Fenster verwenden, um zu meiner Website zu navigieren.
Sie können sogar eine einfache Weiterleitungsseite erstellen, die dies tut und dann zu der URL wechselt, die Sie ihr gegeben haben. Etwas wie,
JavaScript auf der übergeordneten Seite:
Und dann können Sie mit ein wenig Javascript von hier aus die URL abrufen und dorthin umleiten.
JavaScript auf Weiterleitungsseite:
quelle