Получение анкора элемента 'a': способы, примеры и полифиллы

Получение анкора с помощью javascript

В тех случаях, когда требуется получить значение атрибута href для элемента a, необходимо использовать свойство anchorNode.
Например, следующий код выведет в консоль значение анкора элемента a:

const anchor = document.querySelector('a');
console.log(anchor.anchorNode.href);

Однако в некоторых случаях может возникнуть ошибка “error getting anchor”.
error getting anchor возникает, когда элемент a не имеет атрибута href или когда его значение пусто.
Чтобы избежать этой ошибки, необходимо проверить наличие атрибута href перед тем, как пытаться получить его значение.

Получение анкора с помощью jQuery

В jQuery получение анкора элемента a можно выполнить с помощью метода attr():

const anchor = $('a');
console.log(anchor.attr('href'));

Метод attr() вернет значение атрибута href, если он существует, или null, если атрибут не существует или его значение пусто.

Использование полифиллов

Для поддержки получения анкора в старых браузерах можно использовать полифиллы.
Например, следующий полифилл реализует свойство anchorNode для элементов a:

if (!('anchorNode' in Element.prototype)) {
  Element.prototype.anchorNode = function() {
    return this.firstChild;
  };
}

После применения этого полифилла можно получить анкор элемента a с помощью свойства anchorNode, как описано выше.

Примеры использования

Получение анкора может быть полезно в различных ситуациях, например:

  • Для открытия ссылки в новом окне или вкладке:
const anchor = document.querySelector('a');
window.open(anchor.href, '_blank');
  • Для проверки, указывает ли ссылка на внешний или внутренний ресурс:
const anchor = document.querySelector('a');
if (anchor.href.startsWith('http')) {
  // Внешняя ссылка
} else {
  // Внутренняя ссылка
}
  • Для получения адреса электронной почты из ссылки mailto:
const anchor = document.querySelector('a[href^="mailto:"]');
const email = anchor.href.substring('mailto:'.length);

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *