33

今私はリンクを持っています

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

ただし、これは常に新しいタブを開きます。次の効果が欲しい

  1. ユーザーがすでに同じURLのタブを持っている場合は、そのタブを再利用し、可能であれば更新します
  2. それ以外の場合は、新しいタブを開きます

JavaScriptを使用してこれを実現するにはどうすればよいですか?

ブラウザ固有のメソッドがいくつかあれば問題ありません。そのため、対応するサポートがないブラウザのユーザーは、常に新しいタブの方法に「フォールバック」します。

4

1 に答える 1

33

タブを再利用して開くために、特定のウィンドウの名前を設定できます。問題は、hrefが同じである限り、リロードされないことです。refreshそのため、部品を簡単に入手することはできません。

したがって、たとえば、次のことができます。

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

JSでは、を使用して実際に同じものを取得できますwindow.opentarget手動で指定する必要がないように、URLをとして使用することもできます。

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

この方法でいくつかのリンクを開くために、一般化して、クリックリスナーをドキュメントに追加することもできます。何かのようなもの:

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

ページが同じドメインにある場合、この時点で、ページの経験的な更新も実行しようとしている可能性があります。

于 2012-12-08T17:31:03.107 に答える