Page 129 - 6108
P. 129

3.5.4 Поширення подій
                     Коли  натискаємо  на  який-небудь  елемент  на  станиці  і  генерується  подія
               натискання,  то  ця  подія  може  поширюватися  від  елемента  до  елементу.
               Наприклад,  якщо  ми  натискаємо  на  блок  div,  то  також  ми  натискаємо  і  на

               елемент  body, в якому блок  div знаходиться. Тобто  відбувається поширення
               події.
                     Стандарт виділяє цілих три стадії поширення події (рис.1 ).
                     Подія  спочатку  йде  зверху  вниз.  Ця  стадія  називається  «стадія
               перехоплення» (capturing stage).
                     Подія досягло цільового елемента. Це – «стадія мети» (target stage).
                     Після цього подія починає спливати. Це – «стадія спливання» (bubbling
               stage).
                     Обробники,  додані  через  on<подія>,  нічого  не  знають  про  стадію
               перехоплення,  а  починають  працювати  з  спливання.  Обробники  додані  через
               addEventListener знають про всі стадії. За визначення стадії перехоплення події
               відповідає другий параметр методу – useCapture.

                     –  Якщо аргумент true, то подія буде перехоплено по дорозі вниз.
                     –  Якщо аргумент false, то подія буде спіймано при спливанні.
                     На якому б елементі зловили подія, завжди можна дізнатися, де саме вона
               сталося.  Найглибший  елемент,  який  викликає  подія,  називається  «цільовим»
               або  «вихідним»  елементом  і  доступний  як  event.target.  Елемент,  який
               зловив подію доступний в обробнику, як event.currentTarget або this.
                     Наприклад, якщо стоїть тільки один обробник form.onclick, то він
               «зловить» всі кліки всередині форми. Де б не був клік всередині – він спливе до
               елемента <form>, на якому спрацює обробник.
   124   125   126   127   128   129   130   131   132   133   134