Открыть URL-адрес в новой вкладке или повторно использовать существующий по возможности

Теперь у меня есть ссылка

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

Однако это всегда открывает новую вкладку. Я хочу следующий эффект

  • Если у пользователя уже есть вкладка с тем же URL-адресом, повторно используйте эту вкладку и, если возможно, обновите
  • В противном случае откройте новую вкладку

Как я могу достичь этого с помощью JavaScript?

Это нормально, если есть только некоторые специфичные для браузера методы, поэтому пользователи браузеров без соответствующей поддержки будут "возвращаться" к пути всегда-новой вкладки.

Ответы

Ответ 1

Вы можете установить определенное имя окна, чтобы открыть повторное использование вкладки. Проблема в том, что, поскольку href будет таким же, он не будет перезагружен. Таким образом, вы не можете легко получить refresh часть.

Так, например, вы можете иметь:

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

В JS вы можете получить то же самое, используя window.open. Вы также можете использовать url как target, так что вам не нужно указывать вручную:

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

Если страница находится в том же домене, на данный момент вы, возможно, попытаетесь сделать эмпирическое обновление страницы.