Тег href="javascript:void(0)"in HTML <a>— це поширена техніка, яка використовується для запобігання будь-яким діям посилання під час натискання. По суті, це робить посилання нефункціональним з точки зору навігації, але все ще дозволяє йому бути інтерактивним для таких цілей, як ініціювання функцій або подій JavaScript.
Ось розбивка того, що javascript:void(0)робить:
javascript:це протокол, який використовується для виконання коду JavaScript безпосередньо з URL-адреси або гіперпосилання.void(0)є виразом JavaScript. Операторvoidобчислює наступний за ним вираз (у цьому випадку0), а потім повертаєundefined. Це корисно вhrefатрибутах гіперпосилання, щоб гарантувати, що браузер не намагатиметься переспрямувати на нову сторінку чи перезавантажити поточну сторінку. Натомість він фактично нічого не робить з точки зору навігації сторінкою, але все одно виконує код JavaScript, якщо він присутній.
Загальне використання:
- Запобігання поведінці посилань за замовчуванням : це часто використовується в
<a>тегах, де ви насправді не хочете нікуди переходити, але хочете запускати якусь функцію JavaScript після натискання. Це чистіший спосіб, ніж використання#inhref, який змінює URL-адресу шляхом додавання решітки (можливо впливає на стан сторінки чи прокручування). - Посилання-заповнювач : іноді
javascript:void(0)використовується як покажчик місця заповнення вhrefатрибуті, коли фактичне посилання ще не визначено або коли<a>тег призначений виключно для обробки подій через JavaScript.
Альтернативні підходи:
- Використання
#: до того, якjavascript:void(0)став популярним,#використовувався широко. Однак це може призвести до небажаних змін URL-адреси або вплинути на поведінку прокручування. - Обробники подій : більш сучасний підхід полягає у використанні обробників подій JavaScript, таких як
onClickі запобігання дії за замовчуванням за допомогоюevent.preventDefault(). Таким чином, ви можете виключитиhrefатрибут або використовувати його більш семантичним і доступним способом.
Приклад із сучасним підходом:
<a href="#" onClick={(e) => e.preventDefault()}>
Click me
</a>
У React або сучасних фреймворках JavaScript зазвичай краще приєднувати такі обробники подій, як onClickі використовувати event.preventDefault()всередині обробника подій, щоб зупинити поведінку посилання за замовчуванням, а не використовувати javascript:void(0). Цей підхід чистіший, більш семантичний і ефективніше відокремлює функціональність від презентації.