javascript window.location w nowej karcie

125

Przekierowuję użytkownika do jakiegoś adresu URL, window.locationale ten adres URL otwiera się w tej samej karcie w przeglądarce. Chcę, żeby było otwarte w nowej karcie. Czy mogę to zrobić z window.location? Czy jest inny sposób wykonania tej czynności?

Muhammad Imran Tariq
źródło
Czy jest window.locationto wymagane? A może można zaoferować inne rozwiązania JS?
Khez
@Khez: można zaoferować inny JS.
Muhammad Imran Tariq

Odpowiedzi:

28

Nie sądzę, aby można to zrobić, chyba że piszesz rozszerzenie przeglądarki. Możesz spróbować użyć window.openi mieć nadzieję, że użytkownik ma przeglądarkę skonfigurowaną do otwierania nowych okien w nowych kartach.

Ian Oxley
źródło
443
window.open('https://support.wwf.org.uk', '_blank');

Drugi parametr powoduje, że otwiera się w nowym oknie. Nie zapomnij przeczytać artykułu informacyjnego Jakoba Nielsena :)

Shane Reustle
źródło
10
ale co, jeśli twoje przeglądarki zablokowały ustawienia wyskakującego okienka? to nie będzie działać.
pregmatch
@Alex meh ... nie jest to „właściwa” odpowiedź. Próbując tego w Firefoksie, gdzie zapobiegam wyskakującym okienkom, ten kod nie działa.
TARKUS
Pracowałem z mojego bookmarkletu w Edge 84.
Ryan Rodemoyer
14

U mnie to działa w Chrome 53. Nie testowałem nigdzie indziej:

function navigate(href, newTab) {
   var a = document.createElement('a');
   a.href = href;
   if (newTab) {
      a.setAttribute('target', '_blank');
   }
   a.click();
}
rodrigo-silveira
źródło
7

z jQuery jest jeszcze łatwiejsze i działa również w Chrome

$('#your-button').on('click', function(){
       $('<a href="https://www.some-page.com" target="blank"></a>')[0].click();    
})
relief.melone
źródło
6

Możesz nawet użyć

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

Spowoduje to otwarcie go na tej samej karcie, jeśli wyskakujące okienko jest zablokowane.

Fanis Mahmalat
źródło
Niesamowita logika OR
Hammad Sajid
1
Dziękuję Ci! To działało świetnie.
thenomadicmann
2

Wolę pop-up, osobiście podobało mi się to rozwiązanie, o którym wspomniałem w tym wątku Pytanie JavaScript: location.href do otwarcia w nowym oknie / karcie?

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

    });

Przykład roboczy .

OyeHarish
źródło