ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Удаление символа хэша из URL без обновления страницы JS

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

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

Если вы хотите быстро и эффективно убрать хеш из URL без перезагрузки страницы, используйте метод history.pushState():

JS
Скопировать код
history.pushState(null, null, location.href.split('#')[0]);

Этот небольшой фрагмент кода обновит URL, удалив из него хеш, при этом не повлияет на текущее состояние страницы.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Разбор стратегии

Исследуем HTML5 History API

HTML5 History API — это великолепный инструмент, который дает возможность разработчикам управлять URL без необходимости перезагружать страницу. Это особенно ценно для одностраничных приложений.

Применение pushState и replaceState

Методы history.pushState() и history.replaceState() предназначены для работы с URL. Метод pushState добавляет новую запись в историю браузера, в то время как replaceState модифицирует текущую:

JS
Скопировать код
// Добавление новой записи в историю переходов.
history.pushState({}, document.title, window.location.pathname + window.location.search);

// Замена текущей записи в истории переходов.
history.replaceState({}, document.title, location.href.split('#')[0]);

Проблема со скроллингом

Нередко после изменения URL начинает автоматически прокручиваться страница. Чтобы избежать этого, следует сохранять и восстанавливать положение скролла:

JS
Скопировать код
// Сохраняем положение прокрутки страницы
let scrollPosition = document.documentElement.scrollTop || document.body.scrollTop;

// Индексируем URL, убираем хеш
history.replaceState({}, document.title, location.href.split('#')[0]);

// Возвращаем страницу к сохранённому положению прокрутки
window.scrollTo(0, scrollPosition);

Совместимость с устаревшими браузерами

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

JS
Скопировать код
if (history.pushState) {
    history.pushState(null, null, location.href.split('#')[0]);
} else {
    // Стратегия обхода для старых браузеров
}

Будьте внимательны с якорями

Если на вашей странице присутствуют якоря, их ID могут конфликтовать с удалённым хешем. Проверьте, не повлияет ли это негативно на прокрутку страницы.

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

Мы переходим от URL с хешем:

Markdown
Скопировать код
Текущий адрес: http://example.com/#hash

К URL без хеша, и при этом не требуется перезагрузка:

JS
Скопировать код
history.pushState("", document.title, window.location.pathname + window.location.search);

Результат:

Markdown
Скопировать код
Изменённый адрес: http://example.com/

Прощайте, хеш, и перезагрузка вас не потребует!

Формирование нашего надёжного плана: Комплексное решение

Совместимость

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

JS
Скопировать код
// Проверяем доступность History API
if (window.history && window.history.pushState) {
    history.pushState("", document.title, window.location.pathname + window.location.search);
} else {
    // Работаем в условиях недостатка поддержки History API
}

Контроль над состоянием URL

Если вам нужно последовательно упорядочивать изменения хеша, предпочтительнее использовать history.replaceState(), чтобы не усложнять историю браузера.

Обновляйтесь вместе с API

Будьте в курсе появления новых API и поддерживайте актуальность своего кода. Держать код в тонусе — это как свежая кровь для программиста.

Демонстрация в действии: воплощение плана в жизнь

Желаете увидеть этот код в действии? Наглядный пример может все прояснить:

JS
Скопировать код
// Ссылка на код в онлайн-редакторе или хранилище кода

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

  1. History API – Веб-API | MDN — полное руководство для разработчиков.
  2. Window: свойство location – Веб-API | MDN — ознакомьтесь с документацией, чтобы более глубоко понять особенности работы с URL.
  3. URL – Веб-API | MDN — основы работы с URL.
  4. History: метод pushState() – Веб-API | MDN — подробное рассмотрение метода для изменения URL.
  5. Использование HTML5 History API | CSS-Tricks — иллюстрированный пример использования.
  6. Как изменить URL без перезагрузки страницы? – Stack Overflow — профессиональное обсуждение с детализированными инструкциями.