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?

iamjonesy
quelle

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.
);
Alex
quelle
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();
Andrew Field
quelle
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.

user616639
quelle
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)

Kamil Kiełczewski
quelle
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 .


quelle
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');
Primoschenko
quelle
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