«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript
site.komp36.ru Создание сайтов. Твой сайт фотографа Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Продающий лендинг «Установка и продажа окон» Установка и продажа окон, установка дверей, перегородок. Одностраничный продающий сайт. Заявки прямо с сайта
site.komp36.ru Универсальный лендинг. Любая тема сайта - 4900 руб. Лендинг адаптируется под любую тему: ремонт, отделка, продажа окон, дверей, лестниц, мебели и многое другое
site.komp36.ru Создание сайтов. Сайт сервисного центра. Сайт компании. Новости и отзывы. Несколько прайс-листов – под каждый отдельная страница. Возможность размещения статей


Игра «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих



Как в JavaScript отменить стандартное поведение в браузере.

Примеры стандартных поведений в браузере:

- если кликнуть по ссылке, то будет осуществлен переход по URL-адресу, который указан в атрибуте href тега a;

- если нажать на кнопку, у которой для атрибута type указано значение submit, то данные из формы будут отправлены на сервер;

- если в браузере зажать левую кнопку мыши, то есть возможность выделять текст.

В JavaScript есть возможность отменять стандартное поведение браузера.



Отмена стандартного поведения браузера

Для отмены стандартного поведения браузера используется метод preventDefault(), который есть у объекта-события Event.

Для работы будет использоваться тестовая html-страница.

Пример №1

HTML-код

<html lang="ru">
  <head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<title>Объект Event</title>
		<link rel="stylesheet" href="css.css">
  </head>
  <body>
        <button id="btn">Нажми меня</button>
		<button>Нажми меня</button>
		<button>Нажми меня</button>

    	<a href="https://www.youtube.com/">https://www.youtube.com/</a>

		<script src="script.js"></script>
  </body>
</html>	

JavaScript-код

'use strict'

// Доступ к ссылке
const link = document.querySelector('a');

// Назначаем для ссылки событие и обработчик
link.addEventListener('click', (event) => {
    event.preventDefault(); // Отменяем стандартное поведение

    // Назначаем иное поведение
    console.log(event.target);
});

Результат в Браузере

Комментарии к примеру.
  • Сначала получаем доступ к ссылке - к тегу a. Напомним, что метод querySelector возвращает первый элемент. Но так как у нас одна ссылка, поэтому смело его используем.

  • Используя метод addEventListener назначаем для ссылки событие click (это одинарный щелчок) и обработчик события - это функция (в данном случае стрелочная), в качестве параметра которой указывается объект события event.

  • Далее, чтобы отменить стандартное поведение используем метод preventDefault() объекта Event (в данном случае это будет говорить о том, что при клике по ссылке переход по ней не будет осуществлен).

  • Назначаем иное поведение. И теперь, при каждом клике по ссылке выводится соответствующая информация в консоль.

Итак, метод preventDefault() объекта Event позволяет отменить стандартное поведение браузера. Этот прием часто используется на практике.

Один обработчик для нескольких элементов

В примере выше мы отменили стандартное поведение браузера для одной ссылки.

Как отменить стандартное поведение браузера для нескольких элементов?

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

Вернемся к html-коду из примера №1 и назначим один обработчик для всех кнопок - для группы тегов button.

Пример №2

JavaScript-код

'use strict';

// Доступ ко всем кнопкам
const btns = document.querySelectorAll('button');

// Перебираем все элементы массива - все кнопки: это аргумент стрелочной функции btn (item)
// И назначаем для события click для каждой из кнопок один обработчик
btns.forEach(btn => {
    btn.addEventListener('click', (event) => {
        console.log(event.target);
    })
});

Результат в Браузере

Комментарии к примеру.
  • Сначала получаем доступ ко всем кнопкам. Для этого используется метод querySelectorAll.

  • Стоит отметить, что к переменной btns не применим метод addEventListener (как мы делали в примере выше с переменной link).

    Так как переменная btns содержит псевдомассив (из всех кнопок), который возвращает метод querySelectorAll.

  • То есть мы можем назначить один обработчик событий для всех кнопок/для каждой из кнопок только методом их перебора (перебирая все элементы псевдомассива). Для этого существует метод forEach.

  • Теперь, при клике по любой из кнопок в консоль выводится соответствующая информация.

Здесь мы разобрали, как работает метод preventDefault() и как происходит отмена стандартного поведения браузера.

А также, как назначить один обработчик событий для нескольких элементов страницы.

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

Третий аргумент метода addEventListener

У метода addEventListener может быть третий аргумент (необязательный). Это можно увидеть, если обратиться к официальной документации.

Рассмотрим еще раз синтаксис метода addEventListener (ранее рассматривался синтаксис с двумя аргументами, так как именно сейчас в рамках этой статьи мы увидим, как может использоваться третий аргумент метода addEventListener).

target.addEventListener(type, listener[, options]);

Что передается в метод addEventListener?

type - тип события;

listener - обработчик события;

options - есть возможность добавления опций.

Итак, согласно официальной документации у метода addEventListener в качестве третьего аргумента могут использоваться некоторые опции. Рассмотрим одну из них - это свойство once.

Свойство once принимает одно из булевых значений и при значении true указывает, что обработчик может быть вызван не более одного раза.

Продолжим работать с примером №2: оптимизируем его код -> вынесем обработчик в отдельную функцию и, используя в качестве третьего аргумента метода addEventListener свойство once, сделаем так, чтобы для каждой из кнопок обработчик срабатывал только один раз.

Пример №3

JavaScript-код

'use strict';

// Доступ ко всем кнопкам
const btns = document.querySelectorAll('button');

// Обработчик для вывода информации в консоль
const outputConsole = (event) => {
    console.log(event.target);
}

// Для каждой из кнопок назначаем обработчик, который срабатывает один раз
btns.forEach(btn => {
    btn.addEventListener('click', outputConsole, {once: true})
});

Результат в Браузере

Читайте также...

site.komp36.ruТвой сайт фотографа. Создание сайтов Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Акция Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Акция Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта

Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Рунет - Часть 4
Тематические публикации
site.komp36.ru Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта
Популярные заметки
Последние заметки