JavaScript: location.href da aprire in una nuova finestra / scheda?


389

Ho un file JavaScript da uno sviluppatore di terze parti. Ha un link che sostituisce la pagina corrente con la destinazione. Voglio che questa pagina sia aperta in una nuova scheda.

Questo è quello che ho finora:

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

Qualcuno mi può aiutare?

Risposte:


932
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
Vale la pena ricordare: se viene creata una nuova scheda o finestra, viene deciso dal browser (impostazione).
Jandy

4
@alex Ho modificato questa risposta per rendere leggibile il bit importante. Se non approvi la mia formattazione, posso suggerire di abbreviare l'URL in modo che il secondo parametro rientri nella regione di non scrolla?
Phrogz,

5
@ErickBest È errato. "_blank"garantisce che la finestra / scheda sarà nuova. Qualsiasi altra cosa (oltre agli altri nomi speciali) sta assegnando a quella finestra il nome specifico e i collegamenti successivi a quella destinazione riutilizzeranno la finestra. jsFiddle .
alex

2
Questo innesca semplicemente una notifica di blocco pop-up nei browser moderni, non simula affatto un _blankclic di ancoraggio.
Nathan Hornby,

22
popup impedito dal browser.
Jitendra Pancholi,

24

Se si desidera utilizzare location.hrefper evitare problemi di popup, è possibile utilizzare un riferimento vuoto <a>e quindi utilizzare JavaScript per fare clic su di esso.

qualcosa di simile in HTML

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

Quindi fare clic su JavaScript come segue

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

13
Speravo in questa soluzione, tuttavia sembra ancora innescare il blocco pop-up (almeno in Chrome). Ho la sensazione che il browser sia consapevole che si tratta di un clic javascript e lo tratta in modo diverso.
Nathan Hornby,

1
Grazie Nathan. Hai ragione. Ricevi ancora un messaggio di blocco pop-up. Pensavo di averlo curato. In teoria avrebbe dovuto funzionare. Andrew
andrew field

2
$("#anchorID")[0].click(); utilizzare questa soluzione con jquery.
theBell,

1
Lol theBell, Non è jQuery se accedi direttamente a DOM Element[0]
Andre Figueiredo,

7

Puoi aprirlo in una nuova finestra con window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Se si desidera aprirlo in una nuova scheda, aprire la pagina corrente in due schede e quindi consentire l'esecuzione dello script in modo da ottenere sia la pagina corrente che la nuova pagina.


6

Alternativa js pura a window.open

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

qui è un esempio funzionante (i frammenti di stackoverflow non consentono l'apertura)


0

Per esempio:

    $(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();

    });

Esempio funzionante .


Popup impedito dal browser.
Millar248,

1
Significa che hai un blocco degli annunci o qualcos'altro che lo blocca. Il comportamento predefinito dovrebbe funzionare in condizioni normali
Andrey Seregin,

0

Puoi anche aprire una nuova scheda chiamando un metodo di azione con un parametro come questo:

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

Sono richieste la prima e la seconda linea? Non funzionerà senza le variabili reportDatee url?
Impara per divertimento il

È possibile eliminare il parametro (reportDate), ma l'url var è importante perché contiene la chiamata al metodo action.
Primoshenko
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.