2012-12-08 1 views
16

Jetzt habe ich einen LinkURL öffnet in einem neuen Tab oder Wiederverwendung bestehenden, wann immer möglich

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

Dies ist jedoch immer eine neue Registerkarte öffnen. Ich mag folgende Wirkung

  1. Wenn der Benutzer bereits eine Registerkarte mit der gleichen URL hat, wiederverwenden, die Registerkarte und aktualisiert, wenn möglich
  2. Andernfalls einen neuen Tab öffnen

Wie kann ich erreichen, das mit JavaScript?

Es ist in Ordnung, wenn es nur einige browserspezifische Methoden gibt, so dass Benutzer von Browsern ohne entsprechende Unterstützung auf die immer neue Registerkarte zurückfallen.

+0

Ich habe noch nicht genug Reputation für einen Kommentar, also bitte wählen Sie dies nicht als Antwort, aber ich glaube, Sie finden ein Beinahe-Duplikat dieser Frage hier: http://stackoverflow.com/questions/2641812/how-to-detect-die-gleiche-Seite-ist-schon-geöffnet-in-einem-Fenster-in-ie Viel Glück! –

Antwort

19

Sie können bestimmten Fensternamen festlegen, um die Registerkarte wieder zu öffnen. Das Problem ist, dass, solange der href der gleiche ist, er nicht neu geladen wird. So können Sie den refresh Teil nicht einfach erhalten.

So zum Beispiel können Sie haben:

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

In JS, können Sie das gleiche tatsächlich erhalten können, window.open verwenden. Sie könnten auch die URL als target, verwenden, so dass Sie angeben müssen nicht manuell: ein Klick Zuhörer auf das Dokument, um einige Links auf diese Weise zu öffnen

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

Sie könnten auch verallgemeinern, und fügen Sie . Etwas wie:

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

Wenn die Seite auf der gleichen Domäne sind, an dieser Stelle Sie wahrscheinlich versuchen, könnte auch ein empirisches Aktualisierung der Seite zu tun.

+2

Irgendwie funktioniert es nicht für mich. Wenn ich die Frage und die Antwort verstanden habe, dann sollte es sein, der erste Link-Klick öffnet den neuen Tab im Browser und nach einem Klick auf den Link sollte der gleiche Browser-Tab erneut verwendet werden ... Ich habe diese Lösung versucht, aber nie funktioniert. Es öffnet jedes Mal einen neuen Tab. Außer wenn der gleiche Link ausgelöst wird, öffnet es keinen anderen Tab. – Liladhar

+0

Beachten Sie, dass nach dem zweiten Ctrl + Click-Browser (mindestens Chrome) zu dieser Registerkarte wechseln. Das ist nicht wirklich das, was ich erwarten würde. – coolguy