window.open
Popups können nicht zuverlässig in einem neuen Tab in allen Browsern geöffnet werden
Verschiedene Browser implementieren das Verhalten window.open
auf unterschiedliche Weise, insbesondere im Hinblick auf die Browsereinstellungen eines Benutzers. Sie können nicht erwarten, dass dasselbe Verhalten für window.open
alle Bereiche von Internet Explorer, Firefox und Chrome gilt, da die Browsereinstellungen eines Benutzers unterschiedlich behandelt werden.
Beispielsweise können Benutzer von Internet Explorer (11) Popups in einem neuen Fenster oder auf einer neuen Registerkarte öffnen. Sie können Benutzer von Internet Explorer 11 nicht zwingen, Popups auf eine bestimmte Weise zu öffnen window.open
, wie in Quentins Antwort erwähnt .
Für Firefox (29) -Nutzer window.open(url, '_blank')
hängt die Verwendung von den Registerkarteneinstellungen ihres Browsers ab. Sie können sie jedoch weiterhin zwingen, Popups in einem neuen Fenster zu öffnen, indem Sie eine Breite und Höhe angeben (siehe Abschnitt "Was ist mit Chrome?" Unten).
Demonstration
Gehen Sie zu den Einstellungen Ihres Browsers und konfigurieren Sie ihn so, dass Popups in einem neuen Fenster geöffnet werden.
Internet Explorer (11)
Testseite
Verwenden Sie nach dem Einrichten von Internet Explorer (11) zum Öffnen von Popups in einem neuen Fenster wie oben gezeigt die folgende Testseite zum Testen window.open
:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814');">
<code>window.open(url)</code>
</button>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', '_blank');">
<code>window.open(url, '_blank')</code>
</button>
</body>
</html>
Beachten Sie, dass die Popups in einem neuen Fenster und nicht auf einer neuen Registerkarte geöffnet werden .
Sie können diese Schnipsel auch oben in Firefox (29) testen, wobei die Registerkarteneinstellung auf neue Fenster eingestellt ist, und dieselben Ergebnisse anzeigen.
Was ist mit Chrome? Es implementiertwindow.open
anders als Internet Explorer (11) und Firefox (29).
Ich bin nicht 100% sicher, aber es sieht so aus, als ob Chrome (Version 34.0.1847.131 m
) keine Einstellungen zu haben scheint, mit denen der Benutzer auswählen kann, ob Popups in einem neuen Fenster oder auf einer neuen Registerkarte (wie Firefox und Internet Explorer) geöffnet werden sollen oder nicht haben). Ich habe in der Chrome-Dokumentation nachgesehen , ob Popups verwaltet werden sollen , aber es wurde nichts darüber erwähnt.
Auch hier scheinen verschiedene Browser das Verhalten von window.open
unterschiedlich zu implementieren . Wenn Sie in Chrome und Firefox eine Breite und Höhe angeben, wird ein Popup erzwungen, selbst wenn ein Benutzer Firefox (29) so eingestellt hat, dass neue Fenster in einem neuen Tab geöffnet werden (wie in den Antworten auf JavaScript in einem neuen Fenster geöffnet, nicht in einem Tab ). ::
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', 'test', 'width=400, height=400');">
<code>window.open(url)</code>
</button>
</body>
</html>
Mit demselben Codefragment oben wird jedoch immer eine neue Registerkarte in Internet Explorer 11 geöffnet, wenn Benutzer Registerkarten als Browsereinstellungen festlegen. Wenn Sie nicht einmal eine Breite und Höhe angeben, wird ein neues Fenster-Popup für sie erzwungen.
Das Verhalten von window.open
in Chrome scheint also darin zu bestehen, Popups in einem neuen Tab zu öffnen, wenn sie in einem onclick
Ereignis verwendet werden, sie in neuen Fenstern zu öffnen, wenn sie über die Browserkonsole verwendet werden ( wie von anderen Personen angegeben ), und sie in neuen Fenstern zu öffnen, wenn angegeben mit einer Breite und einer Höhe.
Zusammenfassung
Verschiedene Browser implementieren das Verhalten in window.open
Bezug auf die Browsereinstellungen der Benutzer unterschiedlich. Sie können nicht erwarten, dass dasselbe Verhalten für window.open
alle Bereiche von Internet Explorer, Firefox und Chrome gilt, da die Browsereinstellungen eines Benutzers unterschiedlich behandelt werden.
Zusätzliche Lektüre