2011-07-13 17 views
50

Używam ten kawałek kodu jQuery uzyskać href linku:jQuery: przejdź do adresu URL z target = "_ blank"

var url = $(this).attr('href'); 

- i ten kawałek kodu, aby przejść do tego href:

window.location = url; 

Wszystko jest tak, jak chcę go, z wyjątkiem nowa strona otwiera się w tym samym oknie, co poprzednio, i chcę go otworzyć w nowym oknie lub karcie (coś, co w zwykłym html byłby osiągnięte przy użyciu formuły target = "_ blank").

Pytanie: Jak mogę otworzyć href w nowym oknie lub karcie z jQuery?

Dziękuję za pomoc!

Odpowiedz

69

Trzeba otworzyć się nowe okno:

window.open(url); 

https://developer.mozilla.org/en-US/docs/DOM/window.open

+0

Dziękuję. Właśnie tego potrzebowałem. Kolejne szybkie pytanie: czy istnieje sposób na poinformowanie przeglądarki, aby otworzyła nową kartę, a nie nowe okno? –

+1

Wierzę, że zależy to od konfiguracji przeglądarki (tj.ustawienie umożliwiające otwieranie okienek wyskakujących w kartach lub oknach). –

+0

Jeszcze raz dziękuję. –

52

użytkowania,

var url = $(this).attr('href'); 
window.open(url, '_blank'); 

Aktualizacja: the href jest lepiej pobierane z podporą od powróci pełny adres URL i jest nieco szybszy.

var url = $(this).prop('href'); 
+0

Dziękujemy! To jest bardzo pomocne! –

+2

Uważaj, powinien to być 'var url = $ (this) .prop ('href');' –

1

Jeśli chcesz utworzyć okno wyskakujące przez jQuery, musisz użyć wtyczki. Ten wydaje się to zrobić, co chcesz:

http://rip747.github.com/popupwindow/

Alternatywnie, można zawsze użyć window.open funkcji JavaScript jest.

Należy zauważyć, że przy każdym podejściu nowe okno musi zostać otwarte w odpowiedzi na wprowadzanie/działanie użytkownika (np. Kliknięcie łącza lub przycisku). W przeciwnym razie blokowanie wyskakujących okienek po prostu zablokuje wyskakujące okienko.

+0

Dziękuję. Nie, nie pop-up. Tylko normalne okno. Normalnie po prostu pozwoliłbym html wykonać zadanie, ale wcześniejszy kod, którego używam w tym samym menu, wyłącza domyślne zachowanie dla wszystkich linków. –

7

Pytanie: W jaki sposób można otworzyć href w nowym oknie lub karcie z jQuery?

var url = $(this).attr('href').attr('target','_blank'); 
0

Funkcja .ready służy do wstawiania atrybutu, gdy strona zakończeniu ładowania.

$(document).ready(function() { 
    $("class name or id a.your class name").attr({"target" : "_blank"}) 
}) 
0

Spróbuj użyć następującego kodu.

$(document).ready(function(){ 
    $("a[@href^='http']").attr('target','_blank'); 
}); 
2

Wykryć, czy użyto atrybutu celu i zawierało "_blank". W przypadku urządzeń mobilnych, które nie lubią "_blank", jest to niezawodna alternatywa.

$('.someSelector').bind('touchend click', function() { 

     var url = $('a', this).prop('href'); 
     var target = $('a', this).prop('target'); 

     if(url) { 
      // # open in new window if "_blank" used 
      if(target == '_blank') { 
       window.open(url, target); 
      } else { 
       window.location = url; 
      } 
     }   
    }); 
Powiązane problemy