Извлечение якоря из URL с использованием jQuery

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для извлечения якоря из URL в jQuery, воспользуйтесь window.location.hash. Если же нужно получить только текст якоря, исключив символ #, примените метод .substring(1).

JS
Скопировать код
var anchor = window.location.hash.substring(1); // Вернётся "anchor", причём уже без решётки

Данный короткий код позволяет извлечь якорь из URL текущей страницы.

Кинга Идем в IT: пошаговый план для смены профессии

Учёт всех сценариев

Указанное решение эффективно работает в большинстве ситуаций. Однако необходимо учесть некоторые сценарии:

Навигация через iFrame

Для работы с iFrames примените window.top.location.hash.substring(1), чтобы обратиться к URL главного окна.

JS
Скопировать код
var iFrameAnchor = window.top.location.hash.substring(1); // Переходим на верхний уровень.

Обработка предопределённого URL

Если вам требуется извлечь якорь из заданной строки URL:

JS
Скопировать код
var url = "http://www.example.com/page.html#anchor";
var anchor = url.split('#').pop(); // Просто и ясно.

Проверка наличия якоря

Перед извлечением якоря убедитесь, что он действительно присутствует в URL:

JS
Скопировать код
if(url.indexOf('#') != -1) {
  var anchor = url.split('#').pop();
} else {
  var anchor = ''; // Возможно, в следующий раз.
}

Готовая функция

Воспользуйтесь предложенной ниже функцией для извлечения якоря в любой ситуации:

JS
Скопировать код
function getAnchorFromURL(url) {
  var a = document.createElement('a'); 
  a.href = url;
  return a.hash.substring(1); // Покоряем морские просторы!
}
var anchor = getAnchorFromURL("http://www.example.com/page.html#anchor");

Внимание! Всегда проверяйте корректность входных данных и разницу в кодировках при работе с URL напрямую.

Адаптация к динамическому контенту

Если содержимое страницы обновляется динамически, window.location.hash может не отслеживать эти изменения. Используйте метод jQuery .on(), чтобы быть в курсе:

JS
Скопировать код
$(window).on('hashchange', function() {
  var dynamicAnchor = window.location.hash.substring(1); // Адаптируемся быстрее, чем хамелеон!
});

Ваш код будет отслеживать изменения URL страницы в режиме реального времени благодаря этому подходу.

Визуализация

Для упрощения понимания извлечения якоря из URL, визуализируем процесс:

Markdown
Скопировать код
URL: "http://www.example.com/page.html#anchor"

Для извлечения якоря используем jQuery:

JS
Скопировать код
var anchorValue = $(location).attr('hash').substring(1); // Прорабатываем детали

В итоге мы получаем именно тот якорь, который был указан в URL:

Markdown
Скопировать код
URL: "http://www.example.com/page.html#anchor"
Output: "anchor"

Таким образом, location.hash позволяет выделить якорные компоненты из заданного URL.

Глубже к сути: навигация по якорям с изяществом

Оборонительное программирование: лучше перестраховаться

Позаботьтесь о надёжности вашего кода, предусмотрев ситуации с отсутствующими якорями:

JS
Скопировать код
var anchor = window.location.hash.substring(1) || 'default-anchor'; // Всегда полезно иметь запасной вариант!

Находчивость: пусть jQuery работает на вас

Если вам важен полный URL, воспользуйтесь $.prop() — мощным инструментом в jQuery:

JS
Скопировать код
var fullAnchor = $(location).prop('hash'); // Немного '#' точно не помешает.

Ясность: прозрачные имена переменных

При выборе названия переменной заботьтесь о том, чтобы оно ясно отражало её назначение:

JS
Скопировать код
var currentPageAnchor = $(location).attr('hash').substring(1); // Текущая страница? Учтено.

Полезные материалы

  1. .attr() | Документация по jQuery API — Погрузитесь в изучение метода jQuery для получения значения атрибутов выбранных элементов.
  2. Window: свойство location – Веб-API | MDN — Ознакомьтесь подробнее с window.location.
  3. jquery – Как проверить наличие хеша в URL на JavaScript? – Stack Overflow — Посмотрите обсуждения и решения по данному вопросу.
  4. .prop() | Документация по jQuery API — Познакомьтесь с методом jQuery для получения свойств выбранных элементов.
  5. JavaScript Window Location — Рассмотрите руководство по использованию window.location для определения URL.
  6. URL: свойство hash – Веб-API | MDN — Изучите подробности извлечения якорной части URL с использованием данной официальной документации.
Свежие материалы