JavaScript: location.href in neuem Fenster / Tab öffnen?


389

Ich habe eine JavaScript-Datei von einem Drittentwickler. Es hat einen Has-Link, der die aktuelle Seite durch das Ziel ersetzt. Ich möchte, dass diese Seite in einem neuen Tab geöffnet wird.

Das habe ich bisher:

if (command == 'lightbox') {
 location.href="https://support.wwf.org.uk/earth_hour/index.php?type=individual";
}

Kann mir jemand helfen?

Antworten:


931
window.open(
  'https://support.wwf.org.uk/earth_hour/index.php?type=individual',
  '_blank' // <- This is what makes it open in a new window.
);

102
Erwähnenswert: Ob ein neuer Tab oder ein neues Fenster erstellt wird, entscheidet der Browser (Einstellung).
jAndy

4
@alex Ich habe diese Antwort bearbeitet, um das wichtige Bit lesbar zu machen. Wenn Sie meine Formatierung nicht gutheißen, kann ich vorschlagen, die URL so zu kürzen, dass der zweite Parameter in den nicht gescrollten Bereich passt?
Phrogz

5
@ErickBest Das ist falsch. "_blank"garantiert, dass das Fenster / die Registerkarte neu ist. Alles andere (außer den anderen speziellen Namen) gibt diesem Fenster den spezifischen Namen, und nachfolgende Links zu diesem Ziel verwenden das Fenster wieder. jsFiddle .
alex

2
Dies löst in modernen Browsern lediglich eine Popup-Blockbenachrichtigung aus und simuliert überhaupt keinen Ankerklick _blank.
Nathan Hornby

22
Popup durch Browser verhindert.
Jitendra Pancholi

24

Wenn Sie location.hrefPopup-Probleme vermeiden möchten , können Sie eine leere <a>Referenz verwenden und dann mit Javascript darauf klicken.

so etwas wie in HTML

<a id="anchorID" href="mynewurl" target="_blank"></a>

Klicken Sie dann wie folgt auf Javascript

document.getElementById("anchorID").click();

13
Ich hatte Hoffnung auf diese Lösung, aber sie scheint immer noch den Popup-Block auszulösen (zumindest in Chrome). Ich habe das Gefühl, dass der Browser weiß, dass es sich um einen Javascript-Klick handelt, und behandelt ihn anders.
Nathan Hornby

1
Danke Nathan. Du bist ganz richtig. Sie erhalten weiterhin eine Popup-Blockmeldung. Ich dachte, ich hätte es geheilt. Theoretisch hätte es funktionieren sollen. Andrew
Andrew Field

2
$("#anchorID")[0].click(); um diese Lösung mit jquery zu verwenden.
TheBell

1
Lol theBell, es ist nicht jQuery, wenn Sie direkt auf DOM Element zugreifen[0]
Andre Figueiredo

7

Sie können es in einem neuen Fenster mit öffnen window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Wenn Sie es auf einer neuen Registerkarte öffnen möchten, öffnen Sie die aktuelle Seite auf zwei Registerkarten und lassen Sie das Skript dann ausführen, damit sowohl die aktuelle Seite als auch die neue Seite abgerufen werden.


6

Reine js Alternative zu window.open

let a= document.createElement('a');
a.target= '_blank';
a.href= 'https://support.wwf.org.uk/';
a.click();

Hier ist ein funktionierendes Beispiel (Stackoverflow-Snippets dürfen nicht geöffnet werden)


0

Zum Beispiel:

    $(document).on('click','span.external-link',function(){
        var t               = $(this), 
            URL             = t.attr('data-href');        
        $('<a href="'+ URL +'" target="_blank">External Link</a>')[0].click();

    });

Arbeitsbeispiel .


Popup durch Browser verhindert.
Millar248

1
Dies bedeutet, dass Sie entweder einen Werbeblock oder etwas anderes haben, das ihn blockiert. Das Standardverhalten sollte unter normalen Bedingungen funktionieren
Andrey Seregin

0

Sie können auch eine neue Registerkarte öffnen, die eine Aktionsmethode mit folgenden Parametern aufruft:

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');

Sind die erste und zweite Zeile erforderlich? Funktioniert es nicht ohne die Variablen reportDateund url?
Lernen Sie zum Spaß

Sie können den Parameter (reportDate) herausnehmen, aber die URL var ist wichtig, da sie den Aufruf der Aktionsmethode enthält.
Primoschenko
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.