HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Термины</a></li>
1 <ul><li><a>Термины</a></li>
2 <li><a>Определение</a><ul><li><a>Принципы объявления</a><ul><li><a>Встроенный обработчик</a></li>
2 <li><a>Определение</a><ul><li><a>Принципы объявления</a><ul><li><a>Встроенный обработчик</a></li>
3 <li><a>Методы в помощь</a><ul><li><a>Популярные методы</a></li>
3 <li><a>Методы в помощь</a><ul><li><a>Популярные методы</a></li>
4 </ul></li>
4 </ul></li>
5 <li><a>Функция AddEventListener - предельное удобство</a><ul><li><a>Какие методы используются</a></li>
5 <li><a>Функция AddEventListener - предельное удобство</a><ul><li><a>Какие методы используются</a></li>
6 </ul></li>
6 </ul></li>
7 </ul></li>
7 </ul></li>
8 </ul></li>
8 </ul></li>
9 <li><a>О свойствах обработчика событий</a><ul><li><a>Эксперименты со свойствами</a></li>
9 <li><a>О свойствах обработчика событий</a><ul><li><a>Эксперименты со свойствами</a></li>
10 <li><a>Выбор оптимального механизма</a></li>
10 <li><a>Выбор оптимального механизма</a></li>
11 </ul></li>
11 </ul></li>
12 <li><a>Несколько слов об объектах событий</a><ul><li><a>Поведение по умолчанию - предотвращение</a></li>
12 <li><a>Несколько слов об объектах событий</a><ul><li><a>Поведение по умолчанию - предотвращение</a></li>
13 <li><a>Всплытие и перехват</a></li>
13 <li><a>Всплытие и перехват</a></li>
14 <li><a>Концепция функционирования</a><ul><li><a>Исправление проблем</a></li>
14 <li><a>Концепция функционирования</a><ul><li><a>Исправление проблем</a></li>
15 </ul></li>
15 </ul></li>
16 <li><a>О делегировании</a></li>
16 <li><a>О делегировании</a></li>
17 </ul></li>
17 </ul></li>
18 </ul><p>Программирование на JavaScript позволяет разработчикам достаточно выучить синтаксис, но на практике им пользоваться не всегда легко. В процессе углубления в коддинг предстоит иметь дело с разнообразными элементами и возможностями. Пример - события.</p>
18 </ul><p>Программирование на JavaScript позволяет разработчикам достаточно выучить синтаксис, но на практике им пользоваться не всегда легко. В процессе углубления в коддинг предстоит иметь дело с разнообразными элементами и возможностями. Пример - события.</p>
19 <p>Соответствующие "объекты" находятся на слуху и активно встречаются в обыденной жизни человека. Программирование тоже предлагает работу с событиями. В данном случае кодификация находится под управлением так называемых Events. Браузер будет генерировать происшествие, когда с документами или их элементами что-либо происходит.</p>
19 <p>Соответствующие "объекты" находятся на слуху и активно встречаются в обыденной жизни человека. Программирование тоже предлагает работу с событиями. В данном случае кодификация находится под управлением так называемых Events. Браузер будет генерировать происшествие, когда с документами или их элементами что-либо происходит.</p>
20 <h2>Термины</h2>
20 <h2>Термины</h2>
21 <p>Помимо стандартной терминологии программирования, чтобы работать с рассматриваемым компонентом, необходимо запомнить дополнительно следующую информацию:</p>
21 <p>Помимо стандартной терминологии программирования, чтобы работать с рассматриваемым компонентом, необходимо запомнить дополнительно следующую информацию:</p>
22 <ol><li>Тип событий - строка, которая отвечает за определение типа манипуляций, повлекшей за собой то или иное происшествие.</li>
22 <ol><li>Тип событий - строка, которая отвечает за определение типа манипуляций, повлекшей за собой то или иное происшествие.</li>
23 <li>Цель - объект, в котором возникает событие. Может выступать элементом, связанным с происшествием.</li>
23 <li>Цель - объект, в котором возникает событие. Может выступать элементом, связанным с происшествием.</li>
24 <li>Обработчики событий - функции, предназначенные для обработки или отклика на возникшее происшествие.</li>
24 <li>Обработчики событий - функции, предназначенные для обработки или отклика на возникшее происшествие.</li>
25 <li>Объект - элемент, который связан с событием и содержит данные об оном.</li>
25 <li>Объект - элемент, который связан с событием и содержит данные об оном.</li>
26 </ol><p>Перечисленные термины и понятия помогут лучше ориентироваться в выбранном направлении. Для реализации поставленной задачи достаточно базовых знаний работы с HTML и JS.</p>
26 </ol><p>Перечисленные термины и понятия помогут лучше ориентироваться в выбранном направлении. Для реализации поставленной задачи достаточно базовых знаний работы с HTML и JS.</p>
27 <h2>Определение</h2>
27 <h2>Определение</h2>
28 <p>Событие - то, что происходит в процессе выполнения определенных действий. Своеобразная возможность взаимодействия. Пользователь так получает право работать с открытой в интернет-обозревателе странице.</p>
28 <p>Событие - то, что происходит в процессе выполнения определенных действий. Своеобразная возможность взаимодействия. Пользователь так получает право работать с открытой в интернет-обозревателе странице.</p>
29 <p>Пример - нажатие на клавишу с целью внесения тех или иных корректировок. Клиент нажимает сочетание ctrl +, чтобы увеличить масштаб отображаемой страницы.</p>
29 <p>Пример - нажатие на клавишу с целью внесения тех или иных корректировок. Клиент нажимает сочетание ctrl +, чтобы увеличить масштаб отображаемой страницы.</p>
30 <h3>Принципы объявления</h3>
30 <h3>Принципы объявления</h3>
31 <p>В данной статье будут рассмотрены основы работы с элементами событий. Оные могут быть объявлены несколькими способами:</p>
31 <p>В данной статье будут рассмотрены основы работы с элементами событий. Оные могут быть объявлены несколькими способами:</p>
32 <ul><li>методами;</li>
32 <ul><li>методами;</li>
33 <li>функцией addEventListener();</li>
33 <li>функцией addEventListener();</li>
34 <li>посредством HTML атрибутов.</li>
34 <li>посредством HTML атрибутов.</li>
35 </ul><p>Каждый прием предусматривает собственные преимущества и недостатки. Пока разработчик не определился с возможным подходом, лучше изучить их все.</p>
35 </ul><p>Каждый прием предусматривает собственные преимущества и недостатки. Пока разработчик не определился с возможным подходом, лучше изучить их все.</p>
36 <h4>Встроенный обработчик</h4>
36 <h4>Встроенный обработчик</h4>
37 <p>Самый простой вариант развития событий, который можно использовать на практике - это встроенный обработчик рассматриваемых "элементов". В основе него лежат HTML атрибуты:</p>
37 <p>Самый простой вариант развития событий, который можно использовать на практике - это встроенный обработчик рассматриваемых "элементов". В основе него лежат HTML атрибуты:</p>
38 <p>Сегодня к помощи подобного приема практически не прибегают. Встречается метод в некоторых фреймворках.</p>
38 <p>Сегодня к помощи подобного приема практически не прибегают. Встречается метод в некоторых фреймворках.</p>
39 <h4>Методы в помощь</h4>
39 <h4>Методы в помощь</h4>
40 <p>Существует много вариантов работы с элементами Events. Более интересный прием - это реализация при помощи так называемых методов. Он встречается на практике довольно часто. Работать таким образом должен уметь каждый программер.</p>
40 <p>Существует много вариантов работы с элементами Events. Более интересный прием - это реализация при помощи так называемых методов. Он встречается на практике довольно часто. Работать таким образом должен уметь каждый программер.</p>
41 <p>Выше приведен пример реализации событий путем задействования специальных методов. Ключевой особенностью здесь является то, что рассматриваемый пример поддерживает вложенность.</p>
41 <p>Выше приведен пример реализации событий путем задействования специальных методов. Ключевой особенностью здесь является то, что рассматриваемый пример поддерживает вложенность.</p>
42 <h5>Популярные методы</h5>
42 <h5>Популярные методы</h5>
43 <p>Любой уважающий себя программер, работающий с Events, должен изучить имеющиеся методы оных:</p>
43 <p>Любой уважающий себя программер, работающий с Events, должен изучить имеющиеся методы оных:</p>
44 <ul><li>onclick - кликанье курсором мышки;</li>
44 <ul><li>onclick - кликанье курсором мышки;</li>
45 <li>oncontextmenu - правая кнопка мыши, нажатие;</li>
45 <li>oncontextmenu - правая кнопка мыши, нажатие;</li>
46 <li>onmousemove - перемещение курсора на задействованном элементе страницы;</li>
46 <li>onmousemove - перемещение курсора на задействованном элементе страницы;</li>
47 <li>onmouseup - смещение курсора вниз;</li>
47 <li>onmouseup - смещение курсора вниз;</li>
48 <li>onmousedown - нажатие на кнопку, имеющейся на мышке;</li>
48 <li>onmousedown - нажатие на кнопку, имеющейся на мышке;</li>
49 <li>onkeydown - щелканье по клавише;</li>
49 <li>onkeydown - щелканье по клавише;</li>
50 <li>onkeyup - опускание клавиши;</li>
50 <li>onkeyup - опускание клавиши;</li>
51 <li>onkeypress - зажатие имеющегося элемента управления.</li>
51 <li>onkeypress - зажатие имеющегося элемента управления.</li>
52 </ul><p>Это далеко не все методы. Они просто встречаются на практике чаще остальных. Без них код составить весьма проблематично.</p>
52 </ul><p>Это далеко не все методы. Они просто встречаются на практике чаще остальных. Без них код составить весьма проблематично.</p>
53 <h4>Функция AddEventListener - предельное удобство</h4>
53 <h4>Функция AddEventListener - предельное удобство</h4>
54 <p>Это - наиболее простое решение, если хотим воспользоваться событиями в JS. Метод AddEventListener выглядит на примере так:</p>
54 <p>Это - наиболее простое решение, если хотим воспользоваться событиями в JS. Метод AddEventListener выглядит на примере так:</p>
55 <p>Стоит рассмотреть функцию, которая будет добавлять обработчик событий. У нее имеются два параметра:</p>
55 <p>Стоит рассмотреть функцию, которая будет добавлять обработчик событий. У нее имеются два параметра:</p>
56 <ul><li>название события;</li>
56 <ul><li>название события;</li>
57 <li>непосредственно работающая функция, активирующаяся при срабатывании event.</li>
57 <li>непосредственно работающая функция, активирующаяся при срабатывании event.</li>
58 </ul><p>Удалить ранее добавленный обработчик можно через removeEventListener:</p>
58 </ul><p>Удалить ранее добавленный обработчик можно через removeEventListener:</p>
59 <h5>Какие методы используются</h5>
59 <h5>Какие методы используются</h5>
60 <p>Можно использовать следующие "элементы" для создания events:</p>
60 <p>Можно использовать следующие "элементы" для создания events:</p>
61 <ul><li>click - щелчок мышкой;</li>
61 <ul><li>click - щелчок мышкой;</li>
62 <li>mouseup - что происходит, когда кнопка мыши отпускается;</li>
62 <li>mouseup - что происходит, когда кнопка мыши отпускается;</li>
63 <li>mousedown - нажатие на кнопку мыши;</li>
63 <li>mousedown - нажатие на кнопку мыши;</li>
64 <li>mousemove - перемещение курсора на используемом элементе;</li>
64 <li>mousemove - перемещение курсора на используемом элементе;</li>
65 <li>contextmenu - клик ПКМ;</li>
65 <li>contextmenu - клик ПКМ;</li>
66 <li>kedown - щелканье по клавише;</li>
66 <li>kedown - щелканье по клавише;</li>
67 <li>keyup - отпускание имеющейся клавиши;</li>
67 <li>keyup - отпускание имеющейся клавиши;</li>
68 <li>keypress - зажатие.</li>
68 <li>keypress - зажатие.</li>
69 </ul><p>Данные методы почти такие же, как и в предыдущем варианте, но без своеобразной характерной приставки on.</p>
69 </ul><p>Данные методы почти такие же, как и в предыдущем варианте, но без своеобразной характерной приставки on.</p>
70 <h2>О свойствах обработчика событий</h2>
70 <h2>О свойствах обработчика событий</h2>
71 <p>Программирование на JS предоставляет немало способов добавления кодов обработчиков событий на имеющиеся веб-странички. У упомянутых элементов имеются различные свойства. Рассмотрим их на примере кода:</p>
71 <p>Программирование на JS предоставляет немало способов добавления кодов обработчиков событий на имеющиеся веб-странички. У упомянутых элементов имеются различные свойства. Рассмотрим их на примере кода:</p>
72 <p>Здесь onclick выступает в качестве свойства обработчика событий. Относится к так называемому особому типу. При установки оного равным тому или иному коду, соответствующий элемент будет запущен, если event произойдет.</p>
72 <p>Здесь onclick выступает в качестве свойства обработчика событий. Относится к так называемому особому типу. При установки оного равным тому или иному коду, соответствующий элемент будет запущен, если event произойдет.</p>
73 <p>Чтобы добиться аналогичного результата, можно присвоить свойству обработчика имя функции, описанной ранее:</p>
73 <p>Чтобы добиться аналогичного результата, можно присвоить свойству обработчика имя функции, описанной ранее:</p>
74 <h3>Эксперименты со свойствами</h3>
74 <h3>Эксперименты со свойствами</h3>
75 <p>На основе предложенного выше примера можно "поиграть", меняя свойство events.<a>Данная ссылка</a>подскажет, как создать копию файла для дальнейшего применения. Document отвечает за случайные цвета.</p>
75 <p>На основе предложенного выше примера можно "поиграть", меняя свойство events.<a>Данная ссылка</a>подскажет, как создать копию файла для дальнейшего применения. Document отвечает за случайные цвета.</p>
76 <p>Измените btn.onclick на предложенные далее значения, а далее смотрите, что произошло в том или ином случае:</p>
76 <p>Измените btn.onclick на предложенные далее значения, а далее смотрите, что произошло в том или ином случае:</p>
77 <ol><li>Onfocus и onlblur. Цвет будет корректироваться, когда кнопка сфокусируется или не сфокусирована соответственно. Свойство применяется при отображении информации для заполнения полей форм. Если фокусировка отсутствует - для отображения сообщения об ошибке. Аналогичные действия происходят, когда данные введены неверно.</li>
77 <ol><li>Onfocus и onlblur. Цвет будет корректироваться, когда кнопка сфокусируется или не сфокусирована соответственно. Свойство применяется при отображении информации для заполнения полей форм. Если фокусировка отсутствует - для отображения сообщения об ошибке. Аналогичные действия происходят, когда данные введены неверно.</li>
78 <li>Onblclick - изменения осуществляются при условии двойного щелчка.</li>
78 <li>Onblclick - изменения осуществляются при условии двойного щелчка.</li>
79 <li>Window.onkeypress/onkeydown/onkeyup - событие срабатывает, если произойдет нажатие той или иной клавиши на клавиатуре. Keypress сошлется на обычный клик, keydown и keyup разделят операцию на нажатие и отпускание элемента управления. Если обработчик событий регистрируется на самой кнопке, применяется объект window. Это - все окно используемого клиентом браузера.</li>
79 <li>Window.onkeypress/onkeydown/onkeyup - событие срабатывает, если произойдет нажатие той или иной клавиши на клавиатуре. Keypress сошлется на обычный клик, keydown и keyup разделят операцию на нажатие и отпускание элемента управления. Если обработчик событий регистрируется на самой кнопке, применяется объект window. Это - все окно используемого клиентом браузера.</li>
80 <li>Onmouseover и onmouseout - корректировка цвета, если курсор наведен на кнопку или отведен от нее соответственно.</li>
80 <li>Onmouseover и onmouseout - корректировка цвета, если курсор наведен на кнопку или отведен от нее соответственно.</li>
81 </ol><p>Некоторые события выступают в качестве универсальных. Их можно применять практически в любом элементе кода. Пример - onclick, который регистрируется для любого имеющегося объекта. Лишь некоторые ивенты обладают конкретизацией, а также задействуются в узконаправленных ситуациях. Пример - onplay для элементов &lt;video&gt;.</p>
81 </ol><p>Некоторые события выступают в качестве универсальных. Их можно применять практически в любом элементе кода. Пример - onclick, который регистрируется для любого имеющегося объекта. Лишь некоторые ивенты обладают конкретизацией, а также задействуются в узконаправленных ситуациях. Пример - onplay для элементов &lt;video&gt;.</p>
82 <h3>Выбор оптимального механизма</h3>
82 <h3>Выбор оптимального механизма</h3>
83 <p>Для того, чтобы получить контент максимально функциональный и быстрый, требуется грамотно использовать функциональные возможности языка. В случае с JS и ивентами получить предельную работоспособность удается, если выбрать грамотный механизм реализации.</p>
83 <p>Для того, чтобы получить контент максимально функциональный и быстрый, требуется грамотно использовать функциональные возможности языка. В случае с JS и ивентами получить предельную работоспособность удается, если выбрать грамотный механизм реализации.</p>
84 <p>Из предложенных ранее метод рекомендуется избегать встроенных атрибутов событий HTML. Данная практика является устаревшей. Оставшиеся два подхода считаются взаимозаменяемыми, особенно если речь идет о простейших манипуляциях:</p>
84 <p>Из предложенных ранее метод рекомендуется избегать встроенных атрибутов событий HTML. Данная практика является устаревшей. Оставшиеся два подхода считаются взаимозаменяемыми, особенно если речь идет о простейших манипуляциях:</p>
85 <ol><li>Свойства одного обработчика событий обладают меньшей мощностью и параметрами, но лучше обеспечивают совместимость с браузерами. Данный момент рекомендуется учитывать на первых порах обучения.</li>
85 <ol><li>Свойства одного обработчика событий обладают меньшей мощностью и параметрами, но лучше обеспечивают совместимость с браузерами. Данный момент рекомендуется учитывать на первых порах обучения.</li>
86 <li>События уровня 2 DOM обладают большей мощностью. Могут доставить определенные хлопоты из-за усложненной структуры. Обладают худшей поддержкой.</li>
86 <li>События уровня 2 DOM обладают большей мощностью. Могут доставить определенные хлопоты из-за усложненной структуры. Обладают худшей поддержкой.</li>
87 </ol><p>Через функции EventListener() можно при желании удалить код обработчика или создать новый элемент.</p>
87 </ol><p>Через функции EventListener() можно при желании удалить код обработчика или создать новый элемент.</p>
88 <h2>Несколько слов об объектах событий</h2>
88 <h2>Несколько слов об объектах событий</h2>
89 <p>Внутри функций обработчика иногда встречается параметр, который задается именем event или e. Это объект события. Передается обработчикам событий автоматически. Это необходимо для обеспечения дополнительных функций и данных. Вот наглядный пример:</p>
89 <p>Внутри функций обработчика иногда встречается параметр, который задается именем event или e. Это объект события. Передается обработчикам событий автоматически. Это необходимо для обеспечения дополнительных функций и данных. Вот наглядный пример:</p>
90 <p>Здесь происходит следующее:</p>
90 <p>Здесь происходит следующее:</p>
91 <ol><li>Объект события e включается в функцию.</li>
91 <ol><li>Объект события e включается в функцию.</li>
92 <li>В функции осуществляется настройка стилистики фона для e.target. Это кнопка.</li>
92 <li>В функции осуществляется настройка стилистики фона для e.target. Это кнопка.</li>
93 <li>Свойство объекта события target - это всегда ссылка на элемент, где осуществилось то или иное происшествие.</li>
93 <li>Свойство объекта события target - это всегда ссылка на элемент, где осуществилось то или иное происшествие.</li>
94 </ol><p>Предложенный пример событие всплывает относительно случайного цвета фона на кнопке, а не на всей странице сразу.</p>
94 </ol><p>Предложенный пример событие всплывает относительно случайного цвета фона на кнопке, а не на всей странице сразу.</p>
95 <p>e.target применяется тогда, когда возникает необходимость в установке одного и того же обработчика событий на несколько элементов. Также важно, чтобы на них происходило происшествие сразу ко всем "объектам". Пример - есть набор из 20 плиток, которые, если нажали на кнопку, исчезнут "одним махом".</p>
95 <p>e.target применяется тогда, когда возникает необходимость в установке одного и того же обработчика событий на несколько элементов. Также важно, чтобы на них происходило происшествие сразу ко всем "объектам". Пример - есть набор из 20 плиток, которые, если нажали на кнопку, исчезнут "одним махом".</p>
96 <h3>Поведение по умолчанию - предотвращение</h3>
96 <h3>Поведение по умолчанию - предотвращение</h3>
97 <p>Бывает так, что нужно оставить событие, которое выполняет действия, предусматриваемые коддингом "по умолчанию". Пример - веб-форма регистрационного характера. При вводе данных и нажатии кнопки отправки собранные материалы отправляются на установленную страничку сервера, чтобы обработать оные. Браузер окажется перенаправленным на страницу с сообщением об успешной регистрации.</p>
97 <p>Бывает так, что нужно оставить событие, которое выполняет действия, предусматриваемые коддингом "по умолчанию". Пример - веб-форма регистрационного характера. При вводе данных и нажатии кнопки отправки собранные материалы отправляются на установленную страничку сервера, чтобы обработать оные. Браузер окажется перенаправленным на страницу с сообщением об успешной регистрации.</p>
98 <p>Но при регистрации можно допустить ошибку. В этом случае требуется:</p>
98 <p>Но при регистрации можно допустить ошибку. В этом случае требуется:</p>
99 <ul><li>остановить отправку информации на сервер;</li>
99 <ul><li>остановить отправку информации на сервер;</li>
100 <li>показать пользователю сообщение об ошибке;</li>
100 <li>показать пользователю сообщение об ошибке;</li>
101 <li>указать на допущенные неточности для корректировки.</li>
101 <li>указать на допущенные неточности для корректировки.</li>
102 </ul><p>Некоторые браузеры поддерживают автоматическую проверку данных форм, но полагаться на их работоспособность не стоит. Вот форма, в которой вводят фамилию и имя:</p>
102 </ul><p>Некоторые браузеры поддерживают автоматическую проверку данных форм, но полагаться на их работоспособность не стоит. Вот форма, в которой вводят фамилию и имя:</p>
103 <p>А так выглядит реализация простейшей проверки внутри обработчика события onsubmit. Отвечает за проверку на пустоту текстовых полей. Если это так, происходит вызов функции preventDefault() объекта события. Она отвечает за остановку отправки формы. Далее на экране появится сообщение об ошибке.</p>
103 <p>А так выглядит реализация простейшей проверки внутри обработчика события onsubmit. Отвечает за проверку на пустоту текстовых полей. Если это так, происходит вызов функции preventDefault() объекта события. Она отвечает за остановку отправки формы. Далее на экране появится сообщение об ошибке.</p>
104 <p>Предложенная проверка форма является слабой, но это не мешает разобраться в принципах работы.</p>
104 <p>Предложенная проверка форма является слабой, но это не мешает разобраться в принципах работы.</p>
105 <h3>Всплытие и перехват</h3>
105 <h3>Всплытие и перехват</h3>
106 <p>Данные события встречаются не слишком часто, но они могут стать настоящей головной болью. Речь идет о механизмах всплытия и перехвата. Отвечают за описание, когда два обработчика одного и того же события активируются в пределах одного элемента.</p>
106 <p>Данные события встречаются не слишком часто, но они могут стать настоящей головной болью. Речь идет о механизмах всплытия и перехвата. Отвечают за описание, когда два обработчика одного и того же события активируются в пределах одного элемента.</p>
107 <p>Чтобы лучше разобраться в теме, стоит взглянуть на наглядный<a>пример</a>с<a>исходным кодом</a>. Оба - в отдельных браузерных вкладках. Он помогает разобраться с показом и сокрытием &lt;div&gt; с элементом &lt;video&gt; внутри оного:</p>
107 <p>Чтобы лучше разобраться в теме, стоит взглянуть на наглядный<a>пример</a>с<a>исходным кодом</a>. Оба - в отдельных браузерных вкладках. Он помогает разобраться с показом и сокрытием &lt;div&gt; с элементом &lt;video&gt; внутри оного:</p>
108 <p>Здесь происходит следующее:</p>
108 <p>Здесь происходит следующее:</p>
109 <ul><li>Осуществляется нажатие на кнопку.</li>
109 <ul><li>Осуществляется нажатие на кнопку.</li>
110 <li>Атрибут класса элемента &lt;div&gt; корректируется на showing.</li>
110 <li>Атрибут класса элемента &lt;div&gt; корректируется на showing.</li>
111 </ul><ul><li>Добавляются обработчики событий onclick. Один - к div, другой - к video. Посредством использования указателя мыши при щелчке по области div вне зоны видео поле скрывается. Если действие осуществляется в пределах "ограниченной области" - видео воспроизводится.</li>
111 </ul><ul><li>Добавляются обработчики событий onclick. Один - к div, другой - к video. Посредством использования указателя мыши при щелчке по области div вне зоны видео поле скрывается. Если действие осуществляется в пределах "ограниченной области" - видео воспроизводится.</li>
112 </ul><p>Тут возникает проблема - если нажать на видео, оно будет производиться, одновременно скрывая div. Такое поведение связано с тем, что ролик находится внутри div и выступает его частью. Осуществляется запуск нескольких обработчиков событий.</p>
112 </ul><p>Тут возникает проблема - если нажать на видео, оно будет производиться, одновременно скрывая div. Такое поведение связано с тем, что ролик находится внутри div и выступает его частью. Осуществляется запуск нескольких обработчиков событий.</p>
113 <h3>Концепция функционирования</h3>
113 <h3>Концепция функционирования</h3>
114 <p>При инициировании события элементом с родительскими компонентами браузеры работают в два этапа. А именно - захват и всплытие.</p>
114 <p>При инициировании события элементом с родительскими компонентами браузеры работают в два этапа. А именно - захват и всплытие.</p>
115 <p>При захвате осуществляется следующее:</p>
115 <p>При захвате осуществляется следующее:</p>
116 <ol><li>Обозреватель проводит проверку, обладает ли внешний элемент &lt;html&gt; обработчик события onclick, который регистрируется при захвате. Если это так, происходит запуск оного.</li>
116 <ol><li>Обозреватель проводит проверку, обладает ли внешний элемент &lt;html&gt; обработчик события onclick, который регистрируется при захвате. Если это так, происходит запуск оного.</li>
117 <li>Осуществляется переход к следующему элементу внутри &lt;html&gt;.</li>
117 <li>Осуществляется переход к следующему элементу внутри &lt;html&gt;.</li>
118 <li>Выполняются действия, описанные на первом шаге. Это происходит до тех пор, пока приложение не дойдет до объекта, на который на самом деле щелкнули.</li>
118 <li>Выполняются действия, описанные на первом шаге. Это происходит до тех пор, пока приложение не дойдет до объекта, на который на самом деле щелкнули.</li>
119 </ol><p>При всплытии имеет место противоположность:</p>
119 </ol><p>При всплытии имеет место противоположность:</p>
120 <ol><li>Браузер проверяет, есть ли onclick на нажатом элементе.</li>
120 <ol><li>Браузер проверяет, есть ли onclick на нажатом элементе.</li>
121 <li>Происходит запуск оного, если обнаружено соответствие.</li>
121 <li>Происходит запуск оного, если обнаружено соответствие.</li>
122 <li>Переход к следующему родительскому элементу с последующей проверкой. Происходит это до тех пор, пока не будет достигнут элемент &lt;html&gt;.</li>
122 <li>Переход к следующему родительскому элементу с последующей проверкой. Происходит это до тех пор, пока не будет достигнут элемент &lt;html&gt;.</li>
123 </ol><p>Нынешние браузеры изначально регистрируют обработчики на фазе всплытия.</p>
123 </ol><p>Нынешние браузеры изначально регистрируют обработчики на фазе всплытия.</p>
124 <h4>Исправление проблем</h4>
124 <h4>Исправление проблем</h4>
125 <p>Для корректировки проблем, связанных с регистрацией, а также всплытием и захватом можно использовать стандартный объект stopSPropagation. При вызове в обработчике событий объекта делает так, чтобы обработчик выполнялся, но event не всплывало далее по цепочки. Это значит, что другие обработчики не запустятся.</p>
125 <p>Для корректировки проблем, связанных с регистрацией, а также всплытием и захватом можно использовать стандартный объект stopSPropagation. При вызове в обработчике событий объекта делает так, чтобы обработчик выполнялся, но event не всплывало далее по цепочки. Это значит, что другие обработчики не запустятся.</p>
126 <p>В рассмотренном примере возникшую проблему можно решить, изменив вторую строку на:</p>
126 <p>В рассмотренном примере возникшую проблему можно решить, изменив вторую строку на:</p>
127 <p>Но есть и еще один довольно важный механизм. Он называется "делегирование".</p>
127 <p>Но есть и еще один довольно важный механизм. Он называется "делегирование".</p>
128 <h3>О делегировании</h3>
128 <h3>О делегировании</h3>
129 <p>Делегирование событий в языке JS позволяет правильно работать с родительскими элементами. Дочерние отдельно друг от друга не обрабатываются при подобных обстоятельствах. Каждый новый элемент, добавленный в родительский блок, будет автоматически наследовать характерные события.</p>
129 <p>Делегирование событий в языке JS позволяет правильно работать с родительскими элементами. Дочерние отдельно друг от друга не обрабатываются при подобных обстоятельствах. Каждый новый элемент, добавленный в родительский блок, будет автоматически наследовать характерные события.</p>
130 <p>Вот пример, где теги li - это дочерние теги ul. Работа осуществляется со всеми li:</p>
130 <p>Вот пример, где теги li - это дочерние теги ul. Работа осуществляется со всеми li:</p>
131 <p>Сначала требуется:</p>
131 <p>Сначала требуется:</p>
132 <ul><li>обеспечить данные для работы;</li>
132 <ul><li>обеспечить данные для работы;</li>
133 <li>родитель получается из метода querySelector;</li>
133 <li>родитель получается из метода querySelector;</li>
134 <li>дети - через querySelectorAll;</li>
134 <li>дети - через querySelectorAll;</li>
135 <li>первый метод получит один элемент, для группы одинаковых "объектов" применяется второй вариант.</li>
135 <li>первый метод получит один элемент, для группы одинаковых "объектов" применяется второй вариант.</li>
136 </ul><p>Далее подключается обработчик addEventListener на родителя. Первый параметр - передача события клика. Второй параметр - callback функция с передаваемым объектом события, чтобы свойства объекта вызывались внутри. Завершающий этап - вывод на консоль.</p>
136 </ul><p>Далее подключается обработчик addEventListener на родителя. Первый параметр - передача события клика. Второй параметр - callback функция с передаваемым объектом события, чтобы свойства объекта вызывались внутри. Завершающий этап - вывод на консоль.</p>
137 <p>Свойства выводятся в консоль при клике по имеющемуся списку. Цепочка выглядит так:</p>
137 <p>Свойства выводятся в консоль при клике по имеющемуся списку. Цепочка выглядит так:</p>
138 <ul><li>событие мышки;</li>
138 <ul><li>событие мышки;</li>
139 <li>цель;</li>
139 <li>цель;</li>
140 <li>имя тега.</li>
140 <li>имя тега.</li>
141 </ul><p>Требуется узнать, куда щелкнул пользователь. Если по списку - происходит выполнение действия.</p>
141 </ul><p>Требуется узнать, куда щелкнул пользователь. Если по списку - происходит выполнение действия.</p>
142 <p>Если цель события клика event случит тег LI, в консоли возникает надпись "Привет!". В первой части условия ивент.таргет проводится проверка, есть ли у объекта события свойство target. Во второй части после оператора AND проводится удостоверение в том, что был проведен клик по тегу li.</p>
142 <p>Если цель события клика event случит тег LI, в консоли возникает надпись "Привет!". В первой части условия ивент.таргет проводится проверка, есть ли у объекта события свойство target. Во второй части после оператора AND проводится удостоверение в том, что был проведен клик по тегу li.</p>
143 <p>Делегирование требуется тогда, когда на страничке много элементов, работающих с одним и тем же обработчиком событий. А чтобы такие понятия как события, input type и так далее не доставляли хлопот, стоит пройти специализированные дистанционные курсы. Есть предложения для новичков и опытных программеров. Рассчитаны курсы на срок до 12 месяцев. Можно изучить JS с нуля!</p>
143 <p>Делегирование требуется тогда, когда на страничке много элементов, работающих с одним и тем же обработчиком событий. А чтобы такие понятия как события, input type и так далее не доставляли хлопот, стоит пройти специализированные дистанционные курсы. Есть предложения для новичков и опытных программеров. Рассчитаны курсы на срок до 12 месяцев. Можно изучить JS с нуля!</p>
144 <a></a>
144 <a></a>