Отключаем HREF, если выполнено событие ONCLICK: JavaScript

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

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

Для предотвращения перехода по ссылке применяйте метод event.preventDefault() в обработчике события onclick:

HTML
Скопировать код
<a href="https://example.com" onclick="event.preventDefault(); /* Вуаля! */">Нажми здесь</a>

Данный код позволит сработать onclick, но href не выполнится.

Пошаговый план для смены профессии

Встраивание onclick без href

Если JavaScript недоступен (отключен или не поддерживается браузером), наша ссылка продолжит работать благодаря резервному варианту href. Используйте инлайн-объявление return false:

HTML
Скопировать код
<a href="https://example.com" onclick="console.log('Клик зарегистрирован, перехода нет!'); return false;">Нажми здесь</a>

При активном JavaScript onclick выполняется и блокирует href с использованием return false. Без JavaScript браузер воспользуется href по умолчанию.

Применение addEventListener

Перейдем к более элегантному методу, позволяющему разделить HTML и JavaScript с использованием addEventListener:

JS
Скопировать код
document.querySelector('a').addEventListener('click', function(event) {
    event.preventDefault();  // Сдерживаем действие href
    // Вставьте здесь свой код
});

Такой подход придает коду структурированность и облегчает его поддержку.

Избежание задержки href

Устраните задержку при срабатывании href как ненужное ожидание. Используйте preventDefault() или return false для немедленного прекращения перехода и повышения удобства пользователя.

Учет пользователей без JavaScript

Не забывайте о том, что некоторые пользователи могут не использовать JavaScript. В этом случае href должен организовать надежную работу. Проверьте это, временно отключив JavaScript в браузере.

Управление классами

Для управления несколькими ссылками воспользуйтесь классами. Назначьте определенный класс, например, ignore-click, и установите обработчики для всех элементов с этим классом:

JS
Скопировать код
document.querySelectorAll('.ignore-click').forEach(function(element) {
    element.addEventListener('click', function(event) {
        event.preventDefault();  // Отменяем стандартное поведение href 
        // Добавьте здесь больше логики
    });
});

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

Приведем простую инструкцию-схему в форме эмодзи, объясняющую принцип отмены href, используя изображение двери 🚪 и кнопки 🔘:

Markdown
Скопировать код
Стартовая ситуация:
- Дверь 🚪: Открыта (href активен)
- Кнопка 🔘: Не нажата (onclick не выполнен)
Markdown
Скопировать код
Нажимаем кнопку 🔘 (onclick выполнен):
- Дверь 🚪🔒: Закрыта (href отменен)
- Кнопка 🔘✅: Сработала
Markdown
Скопировать код
Итог:
- Дверь 🚪, изначально открытая, теперь закрыта 🔒 после нажатия кнопки 🔘 (онклик)!

Нажали на кнопку 🔘, закрыли дверь 🚪. Всё просто!

JS включен и выключен: Что меняется?

Необходимо учесть сценарии, когда JavaScript включен или выключен. В этих случаях поведение onclick будет адаптироваться:

HTML
Скопировать код
<a href="https://example.com" onclick="if (determineBehavior()) { event.preventDefault(); } else { /* JS выключен, href работает как обычно */ }">Нажми здесь</a>

Здесь determineBehavior() — это функция, определяющая, должен ли выполняться переход по ссылке.

PHP приходит на помощь

Серверные языки программирования, например, PHP, могут быть использованы для управления поведением href в зависимости от наличия JavaScript, определяемого на сервере или с помощью кукис.

Простота — залог изящества

Следите за тем, чтобы ваше решение по деактивации href было наглядным и простым, а также не забывайте о принципах доступности. В конце концов, нам всем нужно думать о всех пользователях, верно?

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

  1. preventDefault() Event Method — Смотрите материал по отмене действий событий.
  2. HTML a href Attribute — Читайте подробнее о работе с атрибутом href.
  3. Добавление, удаление и проверка классов — Вот как управлять классами в CSS и JavaScript.
  4. Введение в события – изучаем веб-разработку | MDN — Изучите события в JavaScript.
  5. Регистрация событий: метод addEventListener() | MDN — Использование метода addEventListener.
  6. Установка атрибутов: метод setAttribute() – Web APIs | MDN — Узнайте о динамической установке атрибутов.
  7. Удаление атрибутов: метод removeAttribute() – Web APIs | MDN — Вот как удалять href и другие атрибуты из элементов.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как предотвратить переход по ссылке при событии onclick?
1 / 5