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?



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.


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 :)


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

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

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.


Niesamowita logika OR
Hammad Sajid

1
Dziękuję Ci! To działało świetnie.
thenomadicmann

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.