Ich versuche, eine URL in einem neuen Tab zu öffnen , im Gegensatz zu einem Popup-Fenster.
Ich habe verwandte Fragen gesehen, bei denen die Antworten ungefähr so aussehen würden:
window.open(url,'_blank');
window.open(url);
Aber keiner von ihnen hat bei mir funktioniert, der Browser hat immer noch versucht, ein Popup-Fenster zu öffnen.
javascript
Kennzeichen
quelle
quelle
Antworten:
Nichts, was ein Autor tun kann, kann sich dafür entscheiden, in einem neuen Tab anstelle eines neuen Fensters zu öffnen. Es ist eine Benutzerpräferenz . (Beachten Sie, dass die Standardbenutzereinstellung in den meisten Browsern für neue Registerkarten gilt. Ein trivialer Test in einem Browser, in dem diese Einstellung nicht geändert wurde, zeigt dies nicht.)
CSS3 schlug ein neues Ziel vor , aber die Spezifikation wurde aufgegeben .
Das Gegenteil ist nicht der Fall; Durch Angabe der Abmessungen für das Fenster im dritten Argument von
window.open()
können Sie ein neues Fenster auslösen, wenn Registerkarten bevorzugt werden.quelle
window.open
wird der Browser angewiesen, etwas Neues zu öffnen. Anschließend öffnet der Browser die in den Einstellungen ausgewählten Elemente - Registerkarte oder Fenster. Ändern Sie in den Browsern, mit denen Sie getestet haben, die Einstellungen so, dass sie in einem neuen Fenster anstelle einer Registerkarte geöffnet werden, und Sie werden feststellen, dass die Lösungen der anderen falsch sind.Das ist ein Trick,
In den meisten Fällen sollte dies direkt im
onclick
Handler für den Link geschehen , um Popup-Blocker und das Standardverhalten "Neues Fenster" zu verhindern. Sie können dies auf diese Weise tun oder indem Sie IhremDOM
Objekt einen Ereignis-Listener hinzufügen .http://www.tutsplanet.com/open-url-new-tab-using-javascript/
quelle
window.open()
wird nicht in einer neuen Registerkarte geöffnet, wenn dies beim tatsächlichen Klickereignis nicht der Fall ist. In dem angegebenen Beispiel wird die URL beim eigentlichen 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 der festgelegten
async : false
Option ausführen.quelle
async: false
funktioniert nicht in Chrome. Um ein neues Fenster über den Rückruf zu öffnen, müssen Sie zuerst ein leeres Fenster öffnen, bevor Sie die HTTP-Anforderung senden und später aktualisieren. Hier ist ein guter Hack .window.open
Popups können nicht zuverlässig in einem neuen Tab in allen Browsern geöffnet werdenVerschiedene 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ürwindow.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
: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 implementiert
window.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 ). ::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 einemonclick
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ürwindow.open
alle Bereiche von Internet Explorer, Firefox und Chrome gilt, da die Browsereinstellungen eines Benutzers unterschiedlich behandelt werden.Zusätzliche Lektüre
window.open
Dokumentation .quelle
Einzeiler:
Es erstellt ein virtuelles
a
Element, gibt estarget="_blank"
so, dass es in einer neuen Registerkarte geöffnet wird, gibt es richtigurl
href
und klickt dann darauf.Und wenn Sie möchten, können Sie darauf basierend eine Funktion erstellen:
und dann können Sie es verwenden wie:
Wichtige Notiz:
openInNewTab
(sowie jede andere Lösung auf dieser Seite) muss während des Rückrufs von Benutzeraktionen aufgerufen werden - z. Inside-Click-Ereignis (nicht direkt in der Rückruffunktion erforderlich, sondern während der Klickaktion).Wenn Sie es in einem zufälligen Moment manuell aufrufen (z. B. innerhalb eines Intervalls oder nach einer Serverantwort), wird es möglicherweise vom Browser blockiert (was sinnvoll ist, da dies ein Sicherheitsrisiko darstellt und zu einer sehr schlechten Benutzererfahrung führen kann )
quelle
$('<a />',{'href': url, 'target', '_blank'}).get(0).click();
Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
Wenn Sie verwenden
window.open(url, '_blank')
, wird es in Chrome blockiert (Popup-Blocker).Versuche dies:
Mit reinem JavaScript
quelle
the request was made in a sandboxed frame whose 'allow-popups' permission is not set
Um Steven Spielbergs Antwort zu erläutern, habe ich dies in einem solchen Fall getan:
Auf diese Weise setze ich kurz bevor der Browser dem Link folgt, das Zielattribut, sodass der Link in einem neuen Tab oder Fenster geöffnet wird ( abhängig von den Einstellungen des Benutzers ).
Ein Zeilenbeispiel in jQuery:
Dies kann auch nur mit nativen Browser-DOM-APIs erreicht werden:
quelle
Ich benutze das folgende und es funktioniert sehr gut!
quelle
Ich denke, dass Sie das nicht kontrollieren können. Wenn der Benutzer seinen Browser so eingerichtet hat, dass Links in einem neuen Fenster geöffnet werden, können Sie dies nicht erzwingen, um Links in einem neuen Tab zu öffnen.
JavaScript wird in einem neuen Fenster geöffnet, nicht in einem Tab
quelle
Eine interessante Tatsache ist, dass die neue Registerkarte nicht geöffnet werden kann, wenn die Aktion nicht vom Benutzer aufgerufen wird (Klicken auf eine Schaltfläche oder etwas anderes) oder wenn sie beispielsweise asynchron ist, wird sie NICHT in einer neuen Registerkarte geöffnet:
Dies kann jedoch abhängig von den Browsereinstellungen in einem neuen Tab geöffnet werden:
quelle
<script>open('http://google.com')</script>
in einer.html
Datei und öffnen Sie sie in einer Neuinstallation einer aktuellen Version von Firefox. Sie werden feststellen, dass Firefox Google in einem neuen Tab (möglicherweise nachdem Sie Popups zugelassen haben) und nicht in einem neuen Fenster öffnet.Wenn Sie nur die Parameter [strWindowFeatures] weglassen, wird eine neue Registerkarte geöffnet, es sei denn, die Browsereinstellung überschreibt (die Browsereinstellung übertrumpft JavaScript).
Neues Fenster
Neue Registerkarte
-- oder --
quelle
quelle
Sie können einen Trick verwenden mit
form
:jsFiddle-Demo
quelle
name
als Schlüssel undvalue
als Wert für alle Parameter in Abfrageparametern gelten. Und dann senden Sie das Formulara
Tag anstelle eines Formulars und unter Verwendung der jQuery-.click()
Methode zum "Senden" erfolgen. Überprüfen Sie meine AntwortDies hat nichts mit den Browsereinstellungen zu tun, wenn Sie versuchen, eine neue Registerkarte über eine benutzerdefinierte Funktion zu öffnen.
Öffnen Sie auf dieser Seite eine JavaScript-Konsole und geben Sie Folgendes ein:
Außerdem wird versucht, ein Popup unabhängig von Ihren Einstellungen zu öffnen, da der Klick von einer benutzerdefinierten Aktion stammt.
Um sich wie ein tatsächlicher Mausklick auf einen Link zu verhalten, müssen Sie den Ratschlägen von @ spirinvladimir folgen und ihn wirklich erstellen:
Hier ist ein vollständiges Beispiel (versuchen Sie es nicht mit jsFiddle oder ähnlichen Online-Editoren, da Sie von dort nicht auf externe Seiten umleiten können):
quelle
w = window.open("placeholder"); $.ajax(...ajax call that returns the url...) success (...w.location = data.url...)
gemäß theandystratton.com/2012/…quelle
JQuery
JS
quelle
Oder Sie können einfach ein Linkelement erstellen und darauf klicken ...
Dies sollte nicht durch Popup-Blocker blockiert werden ... Hoffentlich.
quelle
Es gibt eine Antwort auf diese Frage und es ist nicht nein.
Schritt 1: Erstellen Sie einen unsichtbaren Link:
<a id="yourId" href="yourlink.html" target="_blank" style="display: none;"></a>
Schritt 2: Klicken Sie programmgesteuert auf diesen Link:
document.getElementById("yourId").click();
Bitte schön! Wirkt ein Zauber für mich.
quelle
Ich habe viele Informationen darüber recherchiert, wie man einen neuen Tab öffnet und auf demselben Tab bleibt. Ich habe einen kleinen Trick gefunden, um es zu tun. Nehmen wir an, Sie haben eine URL, die Sie öffnen müssen - newUrl und alte URL - currentUrl , die Sie nach dem Öffnen des neuen Tabs beibehalten müssen. JS-Code sieht ungefähr so aus:
quelle
Wie wäre es mit dem Erstellen eines
<a>
with_blank
as-target
Attributwerts und desurl
ashref
mit Stilanzeige: versteckt mit einem untergeordneten Element? Fügen Sie dann dem DOM hinzu und lösen Sie das Klickereignis für ein untergeordnetes Element aus.AKTUALISIEREN
Das geht nicht Der Browser verhindert das Standardverhalten. Es könnte programmgesteuert ausgelöst werden, folgt jedoch nicht dem Standardverhalten.
Überzeugen Sie sich selbst: http://jsfiddle.net/4S4ET/
quelle
Das Öffnen eines neuen Tabs in einer Firefox (Mozilla) -Erweiterung sieht folgendermaßen aus:
quelle
Dieser Weg ähnelt der obigen Lösung, ist jedoch anders implementiert
.social_icon -> eine Klasse mit CSS
quelle
Dies mag ein Hack sein, aber wenn Sie in Firefox einen dritten Parameter angeben, 'fullscreen = yes', wird ein neues Fenster geöffnet.
Zum Beispiel,
Es scheint tatsächlich die Browsereinstellungen zu überschreiben.
quelle
Diese Arbeit für mich, verhindern Sie einfach das Ereignis, fügen Sie die URL hinzu
<a>
tag
und lösen Sie dann das Klickereignis darauf austag
.quelle
Die
window.open(url)
URL wird im neuen Browser-Tab geöffnet. Unten JS Alternative dazuHier ist ein funktionierendes Beispiel (Stackoverflow-Snippets erlauben nicht das Öffnen eines neuen Tabs)
quelle
Ob die URL in einem neuen Tab oder in einem neuen Fenster geöffnet werden soll, wird tatsächlich von den Browsereinstellungen des Benutzers gesteuert. Es gibt keine Möglichkeit, es in JavaScript zu überschreiben.
window.open()
verhält sich je nach Verwendungszweck unterschiedlich. Wenn es als direktes Ergebnis einer Benutzeraktion aufgerufen wird , sagen wir einen Knopfklick, sollte es gut funktionieren und eine neue Registerkarte (oder ein neues Fenster) öffnen:Wenn Sie jedoch versuchen, eine neue Registerkarte über einen AJAX-Anforderungsrückruf zu öffnen , blockiert der Browser diese, da es sich um eine direkte Benutzeraktion handelt.
Um den Popup-Blocker zu umgehen und einen neuen Tab in einem Rückruf zu öffnen, ist hier ein kleiner Hack :
quelle
Ich habe es auf diese Weise versucht und es scheint gut zu funktionieren
Ich habe hier viele Arbeitsbeispiele gefunden:
http://www.gtalbot.org/FirefoxSection/Popup/PopupAndFirefox.html#TestPopupControl
quelle
Ich werde der Person, die geschrieben hat (hier umschrieben), etwas zustimmen: "Bei einem Link auf einer vorhandenen Webseite öffnet der Browser den Link immer in einem neuen Tab, wenn die neue Seite Teil derselben Website ist wie die vorhandene Webseite. " Zumindest für mich funktioniert diese "allgemeine Regel" in Chrome, Firefox, Opera, IE, Safari, SeaMonkey und Konqueror.
Auf jeden Fall gibt es eine weniger komplizierte Möglichkeit, die Vorteile der anderen Person zu nutzen. Angenommen, es handelt sich um Ihre eigene Website ("thissite.com" unten), auf der Sie steuern möchten, was der Browser tut, dann möchten Sie unten, dass "specialpage.htm" leer ist und überhaupt kein HTML darin enthalten ist ( spart Zeit beim Senden von Daten vom Server!).
quelle
Wenn Sie nur die externen Links (Links zu anderen Websites) öffnen möchten, funktioniert dieses Bit JavaScript / jQuery gut:
quelle
Der Browser öffnet den Link immer in einem neuen Tab, wenn sich der Link auf derselben Domain (auf derselben Website) befindet. Wenn sich der Link in einer anderen Domäne befindet, wird er abhängig von den Browsereinstellungen in einem neuen Tab / Fenster geöffnet.
Demnach können wir also verwenden:
Und fügen Sie etwas jQuery-Code hinzu:
Öffnen Sie also zuerst ein neues Fenster auf derselben Website mit dem _blank-Ziel (es wird in einem neuen Tab geöffnet) und öffnen Sie dann die gewünschte Website in diesem neuen Fenster.
quelle