Як правильно виправити javascript: void(0)? | robot_dreams
Для відстеження статусу замовлення - авторизуйтесь
Введіть код, який був надісланий на пошту Введіть код із SMS, який був надісланий на номер
 
Код дійсний протягом 2 хвилин Код з SMS дійсний протягом 2 хвилин
Ви впевнені, що хочете вийти?
Сеанс завершено
На головну
Що таке javascript: void(0) ?

Що таке javascript: void(0) ?

І як правильно виправити цю помилку на сайті

Якщо ви працюєте з веброзробкою, є висока імовірність того, що ви стикалися з виразом javascript:void(0);. Часто його використовують під час роботи з посиланнями та подіями на сторінці. Але що ж він означає і для чого його застосовують? Нумо розбиратися.

Що таке javascript:void(0);?

javascript:void(0); — це вираз на JavaScript, який використовують як значення атрибута href посилання (виділяють у розмітці <a></a>).

Ось як це працює:

1. Ключове слово javascript: означає для браузера, що тут зазначений код на JavaScript.

2. Оператор void приймає аргумент і повертає undefined, незалежно від того, що передається як аргумент. У нашому випадку аргументом є 0, але за передачі будь-якого іншого значення результат буде тим самим.

3. Таким чином, результатом виконання javascript:void(0) є відсутність значення, яке повертається. Для браузера це сприймається як заборона виконувати дії, що передбачені за замовчуванням.

Для чого ж використовують javascript:void(0);?

Основне призначення цієї конструкції — зупинити стандартні операції в браузері. Як ми вже згадували раніше, найчастіше її можна побачити в посиланнях (<a></a>). Уявімо, що розробник не хоче, щоб відбувалося перенаправлення на якусь іншу сторінку або ж стандартне оновлення сторінки. Тоді розробник зазначить це таким чином:

<a href="javascript:void(0);" onclick="myFunction()">Тисни тут</a>

У прикладі вище за натискання на посилання браузер не оновить сторінку і не виконуватиме будь-які інші стандартні та непотрібні дії. Натомість викликається функція myFunction(), яка і призначена виконати запланований функціонал. Оператор void(0) гарантує, що ніякі інші дії не здійсняться після того, як користувач клікне на посилання.

Чи можна замінити javascript:void(0);?

Відповідь — так, навіть потрібно. Тож розглянемо, як ми можемо замінити цей вираз, а потім з’ясуємо, чому це варто зробити.

Маємо 2 основних варіанти заміни цього виразу:

1. return false

Цей варіант полягає у використанні саме подій і функцій. Можна обробляти подію кліку на посилання без маніпуляцій атрибутом href. Для прикладу:

<a href="#" onclick="myFunction(); return false;">Тисни тут</a>

У цьому випадку атрибут href="#" мав би викликати оновлення сторінки, але оператор return false; у функції onclick зупиняє стандартну поведінку.

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

2. preventDefault()

Сучасний та оптимальний спосіб запобігання стандартній поведінці подій — це використання методу event.preventDefault() у JavaScript.

<a href="#" id="myLink">Тисни тут</a>

<script>

document.getElementById("myLink").addEventListener("click", function(event){

   event.preventDefault();

   myFunction();

});

</script>

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

Саме такий спосіб вказано в специфікації DOM 2 Event.

Чому не варто використовувати javascript:void(0);?

1. Погана читабельність: застосування такої конструкції може знижувати сприйняття коду. Це має не такий інтуїтивний вигляд, як, наприклад, використання подій JavaScript через addEventListener.

2. Застарілі підходи: хоча це доволі поширений підхід, його часто вважають застарілим у сучасній веброзробці.

3. Проблеми із SEO: в контексті пошукових систем та інструментів javascript:void(0) може впливати на оптимізацію, оскільки такі посилання не мають реального призначення і їх можуть розцінити як погано структурований код.

Отже, конструкцію javascript:void(0); використовують для скасування стандартних операцій браузера. Однак у сучасній веброзробці існують елегантніші й сучасніші підходи для розв’язання цієї проблеми, як-от методи обробки подій через JavaScript (наприклад, event.preventDefault()).

На практиці ж javascript:void(0) досі застосовують у багатьох давніх або простих проєктах, але нові стандарти програмування рекомендують переходити на зрозуміліші та сучасніші методи роботи з подіями.

Ще статті