JS об'єкт HashChangeEvent


Загальний опис

Подія HashChangeEvent використовується для відстеження змін в урлі після символу #, що дозволяє змінювати вміст сторінки або виконувати інші дії без перезавантаження. Зміни після # в URL часто використовуються в односторінкових додатках для навігації між різними станами або секціями сторінки.

Подія hashchange спрацьовує, коли змінюється частина URL, що йде після знака #. Цю подію можна використати для реагування на зміни в адресі без необхідності перезавантажувати сторінку. Наприклад, вона корисна для навігації по різних розділах сайту або в односторінкових додатках.

Щоб обробити подію, достатньо додати обробник через метод addEventListener. Ось приклад:

window.addEventListener('hashchange', function(event) {
    console.log('Новий хеш:', location.hash);
});

В обробнику події можна отримати новий хеш за допомогою location.hash, що дає змогу виконувати необхідні дії, коли частина після # змінюється.

window.addEventListener('hashchange', function(event) {
    const newHash = location.hash;  // отримаємо новий хеш
    document.getElementById('content').innerText = 'Ви зараз на сторінці ' + newHash;
});

Цей код дозволяє змінювати контент на сторінці, залежно від значення хеша в URL.

Однією з особливостей є те, що подія не спрацьовує, якщо хеш в URL не змінюється. Також важливо пам'ятати, що зміни хеша не викликають перезавантаження сторінки, що робить подію корисною для розробки динамічних веб-додатків.

автор: Bond

Порада

Для реалізації більш складних механізмів навігації у SPA (односторінкових додатках) можна використовувати хеші для визначення поточного стану. Це дозволяє користувачам копіювати та ділитися URL, що відображає конкретний стан додатка.

автор: Bond
Порада

При використанні hashchange потрібно пам'ятати, що не завжди можна контролювати, яким чином користувач змінює хеш, тому варто обробляти всі можливі випадки зміни хеша. Оскільки зміни хеша не викликають перезавантаження сторінки, важливо використовувати цей механізм для односторінкових додатків або для реалізації зміни контенту без перезавантаження.

автор: Bond
Порада

Не забувайте, що подія hashchange може бути корисною для збереження стану сторінки при навігації між різними частинами додатка. Ви можете використовувати хеш як спосіб відслідковувати, на якій частині сайту знаходиться користувач.

автор: Bond

Синтаксис

window.addEventListener('hashchange', function(event) {
    // Ваш код
});

властивості

Властивість Опис
newURL Містить новий URL після зміни хеша на сторінці.
oldURL Містить старий URL до зміни хеша на сторінці.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
8 3.6 5 10.6 12
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 5
Підтримка: серверні переглядачі
Переглядач Node.js Deno
- -

Приклади

+ запропонувати свій приклад у пісочниці

Цей код дозволяє користувачеві вибирати між різними секціями додатка, і URL буде оновлюватися відповідно до вибору.

HTML

<button id="button1">Натисни</button>
<button id="button2">Натисни</button>
<div id="content">Демонстраційний елемент</div>

JS

document.getElementById('button1').addEventListener('click', function() {
    location.hash = '#section1';
});
document.getElementById('button2').addEventListener('click', function() {
    location.hash = '#section2';
});
window.addEventListener('hashchange', function() {
    const hash = location.hash.substring(1);
    document.getElementById('content').innerText = 'Ви вибрали: ' + hash;
});
автор: Bond

Цей код дозволяє перемикатися між різними секціями сторінки в залежності від хеша. Це зручно для створення розділеної навігації в односторінкових додатках.

HTML

<div class="section">перший елемент section</div>
<div class="section">другий елемент section</div>

JS

window.addEventListener('hashchange', function() {
    const section = location.hash.substring(1);
    document.querySelectorAll('.section').forEach(el => {
        el.style.display = (el.id === section) ? 'block' : 'none';
    });
});
автор: Bond

Цей приклад демонструє використання події hashchange для реалізації динамічної навігації між різними секціями сторінки. Користувач може натискати на кнопки для переходу між секціями. Кожен перехід змінює хеш у URL, а подія hashchange реагує на ці зміни та оновлює контент на сторінці без перезавантаження. Це простий і ефективний спосіб створити інтерактивні веб-додатки з односторінковою навігацією.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід