In Chrome wird dies in einem neuen Tab geöffnet:
<button onclick="window.open('newpage.html', '_blank')" />
Dies wird in einem neuen Fenster geöffnet (aber ich möchte, dass dies auch in einem neuen Tab geöffnet wird:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
Ist das machbar?
javascript
window.open
Andrew
quelle
quelle
Antworten:
Sie können dies nicht direkt steuern, da dies eine Option ist, die von Internet Explorer-Benutzern gesteuert wird.
Das Öffnen von Seiten mit Window.open mit einem anderen Fensternamen wird in einem neuen Browserfenster wie einem Popup oder in einem neuen Tab geöffnet, wenn der Benutzer den Browser dafür konfiguriert hat.
BEARBEITEN:
Eine detailliertere Erklärung:
1. In modernen Browsern wird window.open in einem neuen Tab und nicht in einem Popup geöffnet.
2. Sie können einen Browser zwingen, ein neues Fenster ('Popup') zu verwenden, indem Sie im 3. Parameter Optionen angeben
3. Wenn der Aufruf von window.open nicht Teil eines vom Benutzer initiierten Ereignisses war, wird er in einem neuen Fenster geöffnet.
4. Ein „vom Benutzer initiiertes Ereignis“ muss nicht denselben Funktionsaufruf haben, sondern muss von der Funktion stammen, die durch einen Benutzerklick aufgerufen wird
5. Wenn ein vom Benutzer initiiertes Ereignis einen Funktionsaufruf delegiert oder verzögert (in einem Ereignis-Listener oder -Delegierten, der nicht an das Klickereignis gebunden ist oder beispielsweise setTimeout verwendet), verliert es seinen Status als "vom Benutzer initiiert".
6. Einige Popup-Blocker erlauben das Öffnen von Fenstern aus vom Benutzer initiierten Ereignissen, jedoch nicht die Fenster, die ansonsten geöffnet wurden.
7. Wenn ein Popup blockiert wird, werden manchmal auch diejenigen blockiert, die normalerweise von einem Blocker (über vom Benutzer initiierte Ereignisse) zugelassen werden. Einige Beispiele…
Erzwingen, dass ein Fenster in einer neuen Browserinstanz anstelle einer neuen Registerkarte geöffnet wird:
Folgendes würde als vom Benutzer initiiertes Ereignis gelten, obwohl es eine andere Funktion aufruft:
Folgendes würde nicht als vom Benutzer initiiertes Ereignis gelten, da das setTimeout es verzögert:
quelle
Es ist manchmal nützlich, die Verwendung einer Registerkarte zu erzwingen, wenn der Benutzer dies mag. Wie Prakash oben erwähnt hat, wird dies manchmal durch die Verwendung eines nicht vom Benutzer initiierten Ereignisses diktiert, aber es gibt Möglichkeiten, dies zu umgehen.
Beispielsweise:
öffnet immer "newurl" in einem neuen Browserfenster, da die Funktion "always" nicht als vom Benutzer initiiert betrachtet wird. Wenn wir dies jedoch tun:
Wir öffnen das neue Browserfenster oder erstellen die neue Registerkarte, wie durch die Benutzerpräferenz in dem vom Benutzer initiierten Button-Klick bestimmt. Dann setzen wir den Ort einfach auf die gewünschte URL, nachdem wir vom AJAX-Beitrag zurückgekehrt sind. Voila, wir erzwingen die Verwendung eines Tabs, wenn der Benutzer das mag.
quelle
Wenn Sie verwenden
window.open(url, '_blank')
, wird es in Chrome, Firefox usw. blockiert (Popup-Blocker)Versuche dies,
Arbeiten js Geige für diese http://jsfiddle.net/safeeronline/70kdacL4/2/
Arbeiten js Geige für Ajax-Fenster öffnen http://jsfiddle.net/safeeronline/70kdacL4/1/
quelle
Im Moment (Chrome 39) verwende ich diesen Code, um einen neuen Tab zu öffnen:
Dies kann sich natürlich in zukünftigen Versionen von Chrome ändern.
Es ist eine schlechte Idee, dies zu verwenden, wenn Sie den von Ihren Benutzern verwendeten Browser nicht steuern können. Es funktioniert möglicherweise nicht in zukünftigen Versionen oder mit anderen Einstellungen.
quelle
VM646 js:12 Blocked opening 'http://www.stackoverflow.com/' in a new window because the request was made in a sandboxed frame whose 'allow-popups' permission is not set.
Dadurch wird der Link in einem neuen Tab in Chrome und Firefox geöffnet und möglicherweise in weiteren Browsern, die ich nicht getestet habe:
Grundsätzlich wird eine neue leere Registerkarte geöffnet und anschließend die Position dieser leeren Registerkarte festgelegt. Beachten Sie, dass es sich um eine Art Hack handelt, da das Verhalten der Browser-Registerkarten / -Fenster in Wirklichkeit die Domäne, die Verantwortung und die Auswahl des Browsers und des Benutzers ist.
Die zweite Zeile kann in einem Rückruf aufgerufen werden (nachdem Sie beispielsweise eine AJAX-Anforderung ausgeführt haben), aber der Browser erkennt sie dann nicht als vom Benutzer initiiertes Klickereignis und blockiert möglicherweise das Popup.
quelle
$window
ist nur die Art und Weise, wie AngularJS verwendet wirdwindow
. Sie könnenwindow
stattdessen einfach verwenden . Weitere Informationen: docs.angularjs.org/api/ng/service/$windowKlare Mini-Lösung
$('<form action="http://samedomainurl.com/" target="_blank"></form>').submit()
quelle
Mit diesem Code können Sie in einem neuen Tab öffnen.
Ich habe es von Stackoverflow bekommen ..
quelle
Beste Art, wie ich benutze:
1- Link zu Ihrem HTML hinzufügen:
2- JS-Funktion hinzufügen:
3- Rufen Sie einfach die OpenNewTab-Funktion mit dem gewünschten Link auf
quelle