javascript window.location in una nuova scheda


124

Sto deviando l'utente a un URL tramite window.locationma questo URL si apre nella stessa scheda nel browser. Voglio che sia aperto in una nuova scheda. Posso farlo con window.location? C'è un altro modo per eseguire questa azione?



È window.locationun requisito? Oppure possono essere offerte altre soluzioni JS?
Khez

@ Khez: possono essere offerti altri JS.
Muhammad Imran Tariq

Risposte:


28

Non penso che ci sia un modo per farlo, a meno che tu non stia scrivendo un'estensione per il browser. Puoi provare a utilizzare window.opene sperare che l'utente abbia il browser impostato per aprire nuove finestre in nuove schede.


442
window.open('https://support.wwf.org.uk', '_blank');

Il secondo parametro è ciò che lo fa aprire in una nuova finestra. Non dimenticare di leggere l'articolo informativo di Jakob Nielsen :)


10
ma cosa succede se il tuo browser ha bloccato le impostazioni sui popup? questo non funzionerà.
pregmatch

@Alex meh ... non proprio la risposta "giusta". Provando questo in Firefox, dove prevengo le finestre pop-up, questo codice fallisce.
TARKUS

Ha funzionato dal mio bookmarklet in Edge 84.
Ryan Rodemoyer il

14

Questo funziona per me su Chrome 53. Non ho provato altrove:

function navigate(href, newTab) {
   var a = document.createElement('a');
   a.href = href;
   if (newTab) {
      a.setAttribute('target', '_blank');
   }
   a.click();
}

6

con jQuery è ancora più semplice e funziona anche su Chrome

$('#your-button').on('click', function(){
       $('<a href="https://www.some-page.com" target="blank"></a>')[0].click();    
})

6

Puoi anche usare

window.open('https://support.wwf.org.uk', "_blank") || window.location.replace('https://support.wwf.org.uk');

Questo lo aprirà nella stessa scheda se il popup è bloccato.


Incredibile logica OR
Hammad Sajid

1
Grazie! Funzionava benissimo.
thenomadicmann

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.