2012-12-08 11 views
16

Teraz mam linkaOtwórz adres URL w nowej karcie lub ponownego wykorzystania istniejącego w miarę możliwości

<a href="blabla" target="_blank">link</a> 

Jednak to zawsze otworzyć nową kartę. Chcę następujący efekt

  1. Jeśli użytkownik posiada już kartę z tej samej zawartości, ponowne użycie tej karcie, a następnie odśwież jeśli to możliwe
  2. W przeciwnym razie, należy otworzyć nową kartę

jaki sposób można osiągnąć to za pomocą JavaScript?

Jest OK, jeśli istnieje tylko kilka metod specyficznych dla przeglądarki, więc użytkownicy przeglądarek bez odpowiedniej obsługi będą "zastępować" sposób zawsze nowych kart.

+0

Nie mam wystarczająco dużo reputacji na komentarz, więc proszę nie wybieraj tego jako odpowiedzi, ale uważam, że znajdziesz prawie duplikat tego pytania tutaj: http://stackoverflow.com/questions/2641812/how-to-detect-to-the-same-page-is-already-opened-in-another-window-in-ie Powodzenia! –

Odpowiedz

19

Możesz ustawić nazwę konkretnego okna, aby otworzyć ponownie kartę. Problem polega na tym, że o ile href będzie taki sam, nie zostanie przeładowany. Dlatego nie można łatwo uzyskać części refresh.

Tak więc, na przykład, można mieć:

<a href="blabla" target="blabla">link</a> 
<a href="foo" target="bar">link</a> 

W JS, rzeczywiście można uzyskać to samo, używając window.open. Można również użyć adresu URL jako target, tak że nie trzeba określić ręcznie:

<a href="blabla" onclick="window.open(this.href, this.href); return false">link</a> 
<a href="foo" onclick="window.open(this.href, this.href); return false">link</a> 

można też uogólniać i dodać kliknij słuchacza do dokumentu, aby otworzyć niektóre linki w ten sposób . Coś jak:

<div id="container"> 
    <a href="blabla">link</a> 
    <a href="foo">link</a> 
</div> 

<script> 
    document.getElementById("container").onclick = function(evt){ 
     if (evt.target.tagName === "A") 
      window.open(evt.target.href, evt.target.href); 

     return false; 
    } 
</script> 

Jeśli strona znajdują się w tej samej domenie, w tym momencie można prawdopodobnie próbuje zrobić empiryczne odświeżanie strony, jak również.

+2

Jakoś to nie działa dla mnie. Jeśli zrozumiałem pytanie i odpowiedź, przypuszczam, że jest, pierwsze kliknięcie łącza otworzy nową kartę w przeglądarce i po kliknięciu dowolnego łącza, ta sama karta przeglądarki powinna być ponownie użyta ... Próbowałem tego rozwiązania, ale nigdy nie działało. Otwiera za każdym razem nową kartę. Z wyjątkiem Jeśli uruchomisz ten sam link, nie otwiera on kolejnej karty. – Liladhar

+0

Należy pamiętać, że po drugiej Ctrl + kliknięcie przeglądarki (przynajmniej Chrome) przełączy się na tę kartę. Nie jest to takie, czego bym się spodziewał. – coolguy

Powiązane problemy