Открытие ссылки на новой вкладке

Я создал сайт для проекта, который я делаю. В содержании веб-сайта есть ссылки на внешние веб-страницы, которые можно посетить. В то время, когда пользователь нажимает на одну из ссылок, он будет доставлен по указанной ссылке, и он больше не будет на текущей странице. Я хотел бы сделать так, чтобы указанный веб-сайт в указанной ссылке появился на новой вкладке, когда пользователь нажимает на ссылку. Таким образом, пользователь остается на текущей странице, а также может просматривать другую страницу на новой вкладке.

Я посмотрел в Интернете и нашел это, что казалось полезным:

function externalLinks()
{
  var anchors = document.getElementsByTagName("a");
  for (var i=0; i<anchors.length; i++)
  {
      var anchor = anchors[i];
      if(anchor.getAttribute("href"))
        anchor.target = "_blank";
  }
}
window.onload = externalLinks;

Проблема, с которой я сталкиваюсь, заключается в том, что навигация на моем веб-сайте содержит метки привязки. Итак, теперь, если пользователь нажимает на ссылки на навигационной панели, он откроет новую вкладку. Я хочу, чтобы это произошло ТОЛЬКО, если пользователь нажимает ссылку на содержимое моего веб-сайта. Поэтому, если пользователь нажимает на ссылку в навигационной панели, он не должен открывать новую вкладку и должен просто взять его в указанное место назначения.

Я попытался добавить класс ко всем ссылкам в контенте и использовать getElementByClassName, но он все еще не работает.

Любой может помочь мне с этим

Ответ 1


Вы можете просто использовать HTML:
<a target="_blank" href="YourAmazingURL">Click here for Amazing URL</a>

Другой пример:

<a target="_blank" href="http://www.google.com/">Google</a>

Это использует целевой атрибут.

Дополнительная информация об атрибуте target: http://www.w3schools.com/tags/att_a_target.asp Также: http://www.w3schools.com/html/html_links.asp

EDIT:

Для XHTML просто выполните следующее:

<a href="YourAmazingURL" onclick="window.open(this.href,'_blank');return false;">Click here for Amazing URL</a>

Или снова:

<a href="http://www.google.com/" onclick="window.open(this.href,'_blank');return false;">Google</a>

Ответ 2

Вам нужно использовать javascript для этого?

Если нет, вы можете просто добавить атрибут непосредственно в тег в HTML.

Например: <a href="http://www.google.co.uk" target="_blank">Google</a>

Это, вероятно, будет проще для вас, если javascript не требуется.

Ответ 3

Если вам нужно полагаться на JavaScript:

В основном вам просто нужно изменить свой if -condition (чтобы проверить, указывает ли привязка на внешнее местоположение или нет).

Итак, вместо if(anchor.getAttribute("href")) используйте if(anchor.getAttribute("href") && anchor.hostname!==location.hostname).

С небольшим количеством очистки кода ваша функция должна выглядеть следующим образом:

function externalLinks() {
  for(var c = document.getElementsByTagName("a"), a = 0;a < c.length;a++) {
    var b = c[a];
    b.getAttribute("href") && b.hostname !== location.hostname && (b.target = "_blank")
  }
}
;
externalLinks();

Ответ 4

вы хотите использовать document.getElementById("theidgoeshere");

Чтобы сделать это, установите атрибут id в своей ссылке так:

<a href="www.google.com" id="theidgoeshere">Google</a>

Затем в вашем javascript

  var anchor = document.getElementById("theidgoeshere");
  if(anchor.getAttribute("href"))
      anchor.target = "_blank";

Также обратите внимание, что вы можете обойтись без javascript. Просто поместите target="_blank" в свой якорный тег.