Page 130 - 6108
P. 130

Рисунок 3.4  – Стадії поширення події

                     При цьому  this (= event.currentTarget) завжди буде сама форма, так
               як  обробник  спрацював  на  ній,  а  event.target  буде  містити  посилання  на

               конкретний елемент всередині форми, самий вкладений, на якому стався клік.
                     Спливання  подій  дозволяє  реалізувати  один  з  найважливіших  прийомів
               розробки – делегування. Він полягає в тому, що якщо у нас є багато елементів,
               події  на  яких  потрібно  обробляти  схожим  чином,  то  замість  того,  щоб
               призначати  обробник  кожному  –  ставимо  один  обробник  на  їх  спільного
               предка. З нього можна отримати цільовий елемент  event.target, зрозуміти
               на якому саме нащадку відбулася подія і обробити його.
                     Спливання йде прямо наверх, викликаючи всі обробники на своєму шляху.
               Але  будь-який  проміжний  обробник  може  вирішити,  що  подія  повністю
               оброблена, і зупинити спливання.
                     Для        зупинки          спливання          потрібно         викликати          метод
               event.stopPropagation().
                     <body onclick="alert(''This handler will not be executed!')">
                       <button onclick="event.stopPropagation()">Click me!</button>
                     </body>
                     Якщо  у  елемента  є  кілька  обробників  на  одну  подію,  то  навіть  при
               припиненні  спливання  всі  вони  будуть  виконані.  Тобто,  stopPropagation
               перешкоджає просуванню події далі, але на поточному елементі все обробники
               відпрацюють.  Для  того,  щоб  повністю  зупинити  обробку,  сучасні  браузери
               підтримують  метод  event.stopImmediatePropagation().  Він  не  тільки
               запобігає спливання, а й зупиняє обробку подій на поточному елементі.
   125   126   127   128   129   130   131   132   133   134   135