Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ javascript: Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² события — Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Event — Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ Π²Π΅Π± API

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Event прСдставляСт собой любоС событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ происходит Π² DOM; Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (ΠΊΠ»ΠΈΠΊ ΠΌΡ‹ΡˆΡŒΡŽ ΠΈΠ»ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅), Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ — Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ API (события, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ процСсса Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, приостановка Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Ρ‚.Π΄.). БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠ² событий, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ интСрфСйсы,Β Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ интСрфСйсС Event. Event содСрТит ΠΎΠ±Ρ‰ΠΈΠ΅ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для всСх событий.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ список интСрфСйсов, основанных Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ интСрфСйсС Event, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ссылки Π½Π° Π½ΠΈΡ… Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ MDN API. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° всСх интСрфСйсов ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° «Event».

Event()
Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Β Event ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡƒ.
Event.bubbles Волько для чтСния
ЛогичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, всплыло Π»ΠΈ событиС Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ DOM ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
Event.cancelBubble (en-US)
Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ синонима Event.stopPropagation(). Если ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² true Π΄ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события (Event Handler), Ρ‚ΠΎ событиС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ дальшС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ для Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΡƒΠ·Π»ΠΎΠ²).
Event.cancelable Волько для чтСния
ЛогичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ события.
Event.composed (en-US) Волько для чтСния
ЛогичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ событиС Π²ΡΠΏΠ»Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ shadow DOM (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ DOM ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ элСмСнта) ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ DOM Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.
Event.currentTarget Волько для чтСния
Бсылка Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ зарСгистрированный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ обрабатываСтся событиС. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ планируСтся ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° события; ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ с использованиСм пСрСнаправлСния (retargeting).
Event.deepPath (en-US)Β Π­Ρ‚ΠΎ API Π½Π΅ Π±Ρ‹Π»ΠΎ стандартизировано.
Массив DOM-ΡƒΠ·Π»ΠΎΠ², Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всплывало событиС.
Event.defaultPrevented Волько для чтСния
ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π±Ρ‹Π»Π° Π»ΠΈ для события Π²Ρ‹Π·Π²Π°Π½Π° функция event.preventDefault().
Event.eventPhase Волько для чтСния
Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°Π·Ρƒ процСсса ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события.
Event.explicitOriginalTarget (en-US) Π­Ρ‚ΠΎ API Π½Π΅ Π±Ρ‹Π»ΠΎ стандартизировано.Волько для чтСния
Π―Π²Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ события (Mozilla-спСцифичный). НС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.
Event.originalTarget (en-US) Π­Ρ‚ΠΎ API Π½Π΅ Π±Ρ‹Π»ΠΎ стандартизировано.Волько для чтСния
ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ события Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ (Mozilla-спСцифичный). ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ· Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.
Event.returnValue (en-US) Π­Ρ‚ΠΎ API Π½Π΅ Π±Ρ‹Π»ΠΎ стандартизировано.
НСстандартная Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° (ΠΎΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ ΠΎΡ‚ старых вСрсий Microsoft Internet Explorer) для Event. preventDefault() ΠΈ Event.defaultPrevented.
Event.scoped (en-US) Волько для чтСния Π­Ρ‚ΠΎΡ‚ API Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· употрСблСния ΠΈ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° большС Π½Π΅ гарантируСтся.
ЛогичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ всплываСт Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ΅ событиС Ρ‡Π΅Ρ€Π΅Π· shadow root (Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ DOM элСмСнта). Π­Ρ‚ΠΎ свойство Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΎ Π²Β  composed (en-US).
Event.srcElement Π­Ρ‚ΠΎ API Π½Π΅ Π±Ρ‹Π»ΠΎ стандартизировано.
НСстандартный синоним (остался ΠΎΡ‚ старых вСрсий Microsoft Internet Explorer) для Event.target.
Event.target Волько для чтСния
Бсылка Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ событиС.
Event.timeStamp Волько для чтСния
ВрСмя, ΠΊΠΎΠ³Π΄Π° событиС Π±Ρ‹Π»ΠΎ создано (Π² миллисСкундах). По спСцификации это врСмя ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π­ΠΏΠΎΡ…ΠΈ (Unix Epoch), Π½ΠΎ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… опрСдСляСтся ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ; ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, вСдётся Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ измСнСнию Π΅Π³ΠΎ Π½Π° DOMHighResTimeStamp Ρ‚ΠΈΠΏ.
Event.type Волько для чтСния
НазваниС события (Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° рСгистра символов).
Event.isTrusted Волько для чтСния
ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π±Ρ‹Π»ΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ событиС ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡƒ ΠΌΡ‹ΡˆΡŒΡŽ) ΠΈΠ»ΠΈ ΠΈΠ· скрипта (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ создания события, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ event.initEvent)

Β 

Event.createEvent() (en-US)Β 

Π‘ΠΎΠ·Π΄Π°Ρ‘Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° initEvent().

Β 

Event.initEvent() Π­Ρ‚ΠΎ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π΅ API большС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ ΠΎΠ½ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.
Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ созданного с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Document.createEvent() события. Если событиС ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ, Ρ‚ΠΎ эта функция Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚.
Event.preventBubble() Π­Ρ‚ΠΎ API Π½Π΅ Π±Ρ‹Π»ΠΎ стандартизировано.Π’Ρ‹ΡˆΠ»Π° ΠΈΠ· употрСблСния с вСрсии Gecko 24
ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всплытиС события. Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто Π½Π΅Ρ‘ event.stopPropagation.
Event.preventCapture() Π­Ρ‚ΠΎ API Π½Π΅ Π±Ρ‹Π»ΠΎ стандартизировано.Π’Ρ‹ΡˆΠ»Π° ΠΈΠ· употрСблСния с вСрсии Gecko 24
Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто Π½Π΅Ρ‘ event.stopPropagation.
Event.preventDefault()
ΠžΡ‚ΠΌΠ΅Π½ΡΠ΅Ρ‚ событиС (Ссли Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ).
Event.stopImmediatePropagation()
Для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ события Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ большС Π²Ρ‹Π·Π²Π°Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Ни Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ привязаны ΠΊ этому ΠΆΠ΅ элСмСнту (Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ этот Event.stopImmediatePropagation()), Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ распространСнии события ΠΏΠΎΠ·ΠΆΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ„Π°Π·Π΅ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° — capture).
Event.stopPropagation()
ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° распространСния события Π΄Π°Π»Π΅Π΅ ΠΏΠΎ DOM.
Event.getPreventDefault() Π­Ρ‚ΠΎ API Π½Π΅ Π±Ρ‹Π»ΠΎ стандартизировано.
НСстандартная. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Event.defaultPrevented. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто Π½Π΅Ρ‘ Event.defaultPrevented.
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒChromeFirefox (Gecko)Internet ExplorerOperaSafari
Базовая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°(Π”Π°)(Π”Π°)(Π”Π°)(Π”Π°)(Π”Π°)
cancelBubble ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π²Β  Event?53 (53)[1]???
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒAndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Базовая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°(Π”Π°)(Π”Π°)(Π”Π°)(Π”Π°)(Π”Π°)
cancelBubble ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Π² Event?53.0 (53)[1]???

[1] Π”ΠΎ Firefox 52, это свойство Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² интСрфСйсС UIEvent (en-US). Для Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ смотритС Π±Π°Π³Β 1298970.

Бобытия Π² Javascript

HTML события это такая «Π²Π΅Ρ‰ΡŒ», которая Π²Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌΠΈ происходит с HTML элСмСнтами.

HTML событиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΊΠΈΠΌ дСйствиСм, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

ΠŸΡ€ΠΈ использовании Π½Π° HTML страницС скрипта JavaScript ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° эти события.

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² HTML событий:

  • HTML страница Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ
  • ПолС Π²Π²ΠΎΠ΄Π° Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ
  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» Π½Π° HTML ΠΊΠ½ΠΎΠΏΠΊΡƒ

Часто, ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ HTML события Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. JavaScript позволяСт ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ события Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΊΠΎΠ΄. Для этого Ρƒ HTML элСмСнтов Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ JavaScript ΠΊΠΎΠ΄:

Π‘ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ:
элСмСнт событиС=’ΠΊΠΎΠ΄ JavaScript‘>

Π‘ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ:
<элСмСнт событиСкод JavaScript«>

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ элСмСнту button Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ onclick с JavaScript ΠΊΠΎΠ΄ΠΎΠΌ:


<button>
	Какая сСйчас Π΄Π°Ρ‚Π° ΠΈ врСмя?
</button>

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΊΠΎΠ΄ JavaScript ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ содСрТимоС элСмСнта с id=»demo» ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π² Π½Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ JavaScript ΠΊΠΎΠ΄ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ содСрТимоС самого элСмСнта (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° this.innerHTML):


<button>
	Какая сСйчас Π΄Π°Ρ‚Π° ΠΈ врСмя?
</button>

Однако, ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ JavaScript, состоящий ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ выраТСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ события Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π²Ρ‹Π·ΠΎΠ² JavaScript Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:


<button>
	Какая сСйчас Π΄Π°Ρ‚Π° ΠΈ врСмя?
</button>

Часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ HTML события

НиТС приводится список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… HTML событий:

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
onchangeHTML элСмСнт Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½
onclickΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ» ΠΌΡ‹ΡˆΠΊΠΎΠΉ Π½Π° HTML элСмСнт
onmouseoverΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Π²Π΅Π» ΠΌΡ‹ΡˆΠΊΡƒ Π½Π° HTML элСмСнт
onmouseoutΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π²Π΅Π» ΠΌΡ‹ΡˆΠΊΡƒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ HTML элСмСнта
onkeydownΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹
onloadΠ‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ страницу

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, список событий Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π΄Π»ΠΈΠ½Π½Π΅Π΅. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» Бобытия HTML DOM ΠΈ HTML Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹-события.

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ JavaScript с событиями?

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°:

  • Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы
  • Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ послС закрытия страницы
  • ДСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π² ΠΏΠΎΠ»Π΅ Ρ„ΠΎΡ€ΠΌΡ‹
  • И ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ …

Π’ JavaScript сущСствуСт мноТСство способов Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с событиями:

  • HTML Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹-события ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ JavaScript
  • HTML Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹-события ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ события
  • И ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ …

Π‘Ρ‚Ρ€ΠΎΠΊΠ° (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ String) Π’Π²Π΅Ρ€Ρ… ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости Π² Javascript

события ΠΈ колбэки β€” ДокумСнтация docs.

cs-cart.ru 4.3.x

switch
'ce.switch_[ELM_ID]', [flag]

ЗапускаСтся ΠΏΡ€ΠΈ скрытии/раскрытии элСмСнта с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΈΠΊΡ€ΠΎΡ„ΠΎΡ€ΠΌΠ°Ρ‚Π° cm-combination

  • flag β€” Ρ„Π»Π°Π³ состояния элСмСнта (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚/скрыт)
  • [ELM_ID] β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ элСмСнта (html свойство id)
picker_js_action
'ce.picker_js_action_[ELM_ID]', [elm]

ЗапускаСтся ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ элСмСнта Π² ajax_select_object.tpl

formpre
'ce.formpre_[FORM_NAME]', [form, clicked_elm]

ЗапускаСтся ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ элСмСнтов.

  • form β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ, которая отправляСтся
  • clicked_elm β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Π²Π°Π» ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Ρ„ΠΎΡ€ΠΌΡ‹
  • [FORM_NAME] β€” имя Ρ„ΠΎΡ€ΠΌΡ‹
formpost
'ce.formpost_[FORM_NAME]', [form, clicked_elm]

ЗапускаСтся ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹, послС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ элСмСнтов.

  • form β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ, которая отправляСтся
  • clicked_elm β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π·Π²Π°Π» ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ Ρ„ΠΎΡ€ΠΌΡ‹
  • [FORM_NAME] β€” имя Ρ„ΠΎΡ€ΠΌΡ‹
formajaxpost
'ce. formajaxpost_[FORM_NAME]', [response_data, params, response_text]

ЗапускаСтся послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ аяксом.

  • response_data β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π°
  • params β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса
  • response_text β€” plain-text Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π°
ajaxdone
'ce.ajaxdone', [elms, inline_scripts, params, data, response.text]

ЗапускаСтся послС выполнСния ajax-запроса, послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ всСх Π²Π½Π΅ΡˆΠ½ΠΈΡ… скриптов

  • elms β€” коллСкция элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ запросом
  • inline_scripts β€” массив inline-скриптов, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΡ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅
  • params β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса
  • data β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π°
  • response.text β€” plain-text Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π°
full_page_load
'ce.full_page_load', [response_data]

ЗапускаСтся послС выполнСния ajax-запроса, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»Π° ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½Π° страница ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ ссылкС Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°)

  • response_data β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π°

JavaScript Бобытия. Π£Ρ€ΠΎΠΊΠΈ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

W3Schools Π½Π° русском



HTML события — это «Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ», Ρ‡Ρ‚ΠΎ происходит с HTML элСмСнтами.

Когда JavaScript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° HTML страницах, JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ «Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ» Π½Π° эти события.


HTML Бобытия

HTML-событиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, ΠΈΠ»ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² HTML событий:

  • HTML-страница Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ
  • ПолС Π²Π²ΠΎΠ΄Π° HTML Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ
  • НаТата ΠΊΠ½ΠΎΠΏΠΊΠ° HTML

Часто, ΠΊΠΎΠ³Π΄Π° происходят события, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

JavaScript позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ событий.

HTML позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий с ΠΊΠΎΠ΄ΠΎΠΌ JavaScript ΠΊ HTML Ρ”Π»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ.

Π‘ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ:


<элСмСнт
event=ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ JavaScript>


Π‘ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ:


<элСмСнт
event=«ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ JavaScript«>


Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ onclick (с ΠΊΠΎΠ΄ΠΎΠΌ) добавляСтся ΠΊ элСмСнту
<button>:


Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ JavaScript ΠΊΠΎΠ΄ измСняСт содСрТимоС элСмСнта с.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄ измСняСт содСрТимоС своСго собствСнного элСмСнта (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ this.innerHTML):



JavaScript ΠΊΠΎΠ΄ часто состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк. Π§Π°Ρ‰Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ событий, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:




ΠžΠ±Ρ‰ΠΈΠ΅ HTML события

Π’ΠΎΡ‚ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… распространённых HTML событий:








Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
onchangeHTML-элСмСнт Π±Ρ‹Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½
onclickΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΈΠΊΠ°Π΅Ρ‚ HTML элСмСнт
onmouseoverΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ Π½Π° HTML элСмСнт
onmouseoutΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ΠΎΠ΄Π²ΠΈΠ³Π°Π΅Ρ‚ ΠΌΡ‹ΡˆΡŒ ΠΎΡ‚ HTML элСмСнта
onkeydownΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹
onloadΠ‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ страницы

Бписок Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ: W3Schools Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ JavaScript HTML DOM Бобытия.


Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ JavaScript?

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ дСйствий Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°:

  • Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° загруТаСтся страница
  • Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° страница Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°
  • ДСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ
  • ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅
  • И Π΄Ρ€ΡƒΠ³ΠΎΠ΅ …

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ JavaScript ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с событиями:

  • Атрибуты событий HTML ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ JavaScript Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ
  • Атрибуты событий HTML ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ свои собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий элСмСнтам HTML
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ событий
  • И Π΄Ρ€ΡƒΠ³ΠΎΠ΅ . ..

Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΎ событиях ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… событий Π² Π³Π»Π°Π²Π°Ρ… HTML DOM Π½Π° нашСм сайтС W3Schools Π½Π° русском.




Π—Π°Ρ‡Π΅ΠΌ ΡƒΡ‡ΠΈΡ‚ΡŒ JavaScript ΠΈ Π³Π΄Π΅ ΠΎΠ½ пригодится

JavaScript ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ с HTML, ΠΎΠ½ способСн ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π΅Π±-страницу. Π’ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° событиС программист ΠΌΠΎΠΆΠ΅Ρ‚:

  • Π½Π° Π»Π΅Ρ‚Ρƒ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² HTML-ΠΊΠΎΠ΄ Π»ΡŽΠ±Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ;
  • Π·Π°Π΄Π°Ρ‚ΡŒ внСшний Π²ΠΈΠ΄ элСмСнтов Ρ‡Π΅Ρ€Π΅Π· класс ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ HTML;
  • ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ любой элСмСнт;
  • Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄Π°Π½Π½Ρ‹Π΅;
  • ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос Π½Π° сСрвСр (тСхнология AJAX).

Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сразу ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ. JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС, Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… своСй страницы ΠΎΠ½ Π‘ΠΎΠ³.

JavaScript β€” подходящий язык для изучСния программирования. Он достаточно прост, Π½ΠΎ содСрТит всС Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ: Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ модСль, структуры Π΄Π°Π½Π½Ρ‹Ρ…. Если Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ языки для обучСния β€” Pascal ΠΈ Basic β€” нСсут ΠΌΠ°Π»ΠΎ практичСской ΠΏΠΎΠ»ΡŒΠ·Ρ‹, Ρ‚ΠΎ JavaScript β€” рабочая лошадка.

ΠΠ°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с JavaScript Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ синтаксичСски ΠΎΠ½ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π²Π΅Π»ΠΈΠΊΠΈΠΉ ΠΈ уТасный язык Π‘. Π˜Π·ΡƒΡ‡ΠΈΠ² JavaScript, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡˆΡŒ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ прСдставлСниС ΠΎΠ±ΠΎ всСх «сиобразных» языках: Π‘++, C#, Java, PHP. Они Π·Π°Π΄Π°ΡŽΡ‚ Ρ‚Ρ€Π΅Π½Π΄ Π² своих областях ΠΈ вСсьма популярны, поэтому для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с синтаксисом Π‘.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° JavaScript β€” это простой тСкст. ΠŸΠΈΡΠ°Ρ‚ΡŒ Π½Π° JavaScript ΠΌΠΎΠΆΠ½ΠΎ Π² любом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.

Π’ ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… своСй страницы JavaScript β€” Π‘ΠΎΠ³

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ JavaScript β€” это язык программирования для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, ΠΎΠ½ бСссилСн Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript нСльзя Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ.

Из-Π·Π° ΠΏΡ€Π°Π²ΠΈΠ» бСзопасности Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΌΠΎΡ‰ΡŒ JavaScript ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Β«Ρ€ΠΎΠ΄Π½ΠΎΠΉΒ» страницы. Π£ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условиях ΠΈΠ»ΠΈ ΠΆΠ΅ вовсС нСльзя. НапримСр, JavaScript ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρƒ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ создал сам.

Π“ΠΎΠ΄-Π΄Π²Π° Π½Π°Π·Π°Π΄ появились ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Node.js ΠΈ React Native, с Π½ΠΈΠΌΠΈ Π½Π° JavaScript ΠΏΠΈΡˆΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Π½ΠΎ ΠΈ для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² со смартфонами. Π­Ρ‚ΠΎ ΠΌΠΎΠ΄Π½Ρ‹Π΅ ΠΈ Ρ‚Ρ€Π΅Π½Π΄ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½ΠΎ глобально JavaScript β€” язык программирования для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

На JavaScript ΠΏΠΈΡˆΡƒΡ‚ для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ²

БСйчас Π² Π²Π΅Π±-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ способно ΠΏΠΎΡˆΠ°Ρ‚Π½ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ JavaScript. Π―Π·Ρ‹ΠΊ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ΄Π°Ρ‡Π΅Π½, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Π‘ чистым JavaScript ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ надстройки Π½Π°Π΄ Π½ΠΈΠΌ: CoffeeScript, TypeScript, Dart. Код надстроСк ΠΏΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅, Π΅Π³ΠΎ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ошибки, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ½ всС Ρ€Π°Π²Π½ΠΎ прСобразуСтся Π² JavaScript.

Главная сила JavaScript β€” вСчная ΠΌΠΎΠ»ΠΎΠ΄ΠΎΡΡ‚ΡŒ. Он Π²Ρ‹ΡˆΠ΅Π» 21 Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄, Π½ΠΎ Π½Π΅ устарСл, Π° развивался ΠΈ развиваСтся вслСд Π·Π° HTML.

Π‘Π΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ² Ρƒ JavaScript Π½Π΅Ρ‚

МоТно ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ JavaScript, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ имСя прСдставлСния ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. JavaScript β€” ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ языка, особСнно Ссли ΡΠ²ΡΠ·Ρ‹Π²Π°Π΅ΡˆΡŒ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ с Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ. ΠŸΡ€ΠΈ этом Π»ΡŽΠ±Ρ‹Π΅ знания Π² сфСрС программирования Π±ΡƒΠ΄Π΅Ρ‚ плюсом.

Если Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ HTML ΠΈ CSS, совсСм Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сайта Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ со статичных страниц Π½Π° HTML ΠΈ CSS, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠΆΠΈΠ²ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ JavaScript. Плюс HTML ΠΈ CSS Π΄Π°ΡŽΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ устроСн ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ сайты.

JavaScript β€” подходящий ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ язык, Ссли ΡΠ²ΡΠ·Ρ‹Π²Π°Π΅ΡˆΡŒ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ с Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ

Π˜Π·ΡƒΡ‡ΠΈΠ² основы JavaScript, ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ, ΠΊΠ°ΠΊ хочСтся.

Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для JavaScript β€” Π½Π°Π±ΠΎΡ€Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… классов с функциями. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΡ‰Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΌΠ΅Π½ΡΡŽΡ‚ сцСнарии программирования. Для JavaScript самыС популярныС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” React, jQuery ΠΈ Angular2.

Код Π² ΠΎΠ±Π΅ΠΈΡ… строках Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ β€” скрываСт элСмСнт с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Β«helloDivΒ»

ΠšΡ€ΠΎΠΌΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ надстройки Π½Π°Π΄ JavaScript: CoffeeScript, TypeScript ΠΈ Dart. Одни надстройки ΡΠ΄Π΅Π»Π°ΡŽΡ‚ ваш ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‰Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” строТС.

НаконСц, ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒΡΡ Π·Π° сСрвСрноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Node.js. Π­Ρ‚ΠΎ трСндовая тСхнология, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ BMW, Amazon, Apple ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Π’Π°ΠΊ Π²Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ своих Π·Π½Π°Π½ΠΈΠΉ JavaScript Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ управлСния Π²Π΅Π±-страницСй.

Для JavaScript-программиста Π½Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠ° развития

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ для НСтологии? Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ наши условия ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² курсС всСх новостСй ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Ρƒ НСтологии

Node.js: ΠŸΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ†ΠΈΠΊΠ» событий

Node.js являСтся событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ систСмой. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, всС, Ρ‡Ρ‚ΠΎ происходит Π² Π½ΠΎΠ΄Π΅, являСтся Ρ€Π΅Π°ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π° события ΠΈ события Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ каскад ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠ². Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° основС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libuv ΠΈ называСтся Ρ†ΠΈΠΊΠ»ΠΎΠΌ событий (event loop).

Β 

Π•ΡΡ‚ΡŒ популярноС ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» событий являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых Β«Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ…Β» ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (Node.js).

ΠžΠ±Ρ‰ΠΈΠ΅ заблуТдСния

Как я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π», Π² Ρ†ΠΈΠΊΠ» событий Node.js построСн Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libuv. Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· своих выступлСний,Β Bert Belder, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² libuv, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ поиска ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ извСстной поисковой систСмы, ΠΏΠΎΠΊΠ°Π·Π°Π», Π½Π° сколько Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ люди для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ своё ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ (Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅) ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ†ΠΈΠΊΠ»Π° событий.

Рассмотрим самыС популярныС заблуТдСния.

Π—Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ 1: Π¦ΠΈΠΊΠ» событий Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅

Π—Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

БущСствуСт Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ javascript ΠΊΠΎΠ΄ ΠΈ сущСствуСт Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ†ΠΈΠΊΠ» событий. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° выполняСтся асинхронная опСрация, Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΡ‚ΠΎΠΊ Ρ†ΠΈΠΊΠ»Π° событий, Π° ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ†ΠΈΠΊΠ» событий ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ сообщСниС ΠΎ нСобходимости Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ»Π±Π΅ΠΊ Π² Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ.

Π Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

БущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ javascript ΠΈ Ρ†ΠΈΠΊΠ» событий. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠ² (вСсь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ΄, ΠΏΠΎ сути, являСтся ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠΌ) инициируСтся Ρ†ΠΈΠΊΠ»ΠΎΠΌ событий. НиТС Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅ΠΌ этот вопрос Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Π—Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ 2: Вся асинхронная Ρ€Π°Π±ΠΎΡ‚Π° выполняСтся ΠΏΡƒΠ»ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

Π—Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

АсинхронныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π°Π»ΠΎΠ²ΠΎΠΉ систСмой, осущСствлСниС исходящих HTTP-запросов ΠΈΠ»ΠΈ запросы ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, всСгда Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΡƒΠ»Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ libuv.

Π Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, libuv создаСт ΠΏΡƒΠ», состоящий ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ асинхронныС Π²Ρ‹Π·ΠΎΠ²Ρ‹. Но соврСмСнныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ асинхронныС интСрфСйсы для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ AOI Π² Linux. Π’Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, libuv ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ доступныС асинхронныС интСрфСйсы, избСгая использования ΠΏΡƒΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠŸΠΎΡ…ΠΎΠΆΠ°Ρ ситуация слоТилась ΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ сторонним софтом, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС, Π°Π²Ρ‚ΠΎΡ€Ρ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ асинхронныС интСрфСйсы ΠΎΡ…ΠΎΡ‚Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΡƒΠ»Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΏΡƒΠ»Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для асинхронных взаимодСйствий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самых ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаях.

Π—Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ 3: Π¦ΠΈΠΊΠ» событий β€” это Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ стСка ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

Π—Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

Π¦ΠΈΠΊΠ» событий содСрТит FIFO ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠ· асинхронных Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΈ, ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ задания, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΊΠΎΠ»Π±Π΅ΠΊ.

Π Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π¦ΠΈΠΊΠ» событий содСрТит структуры, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ вСсь стСк ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π¦ΠΈΠΊΠ» событий прСдставляСт собой процСсс, состоящий ΠΈΠ· этапов (Π³Ρ€ΡƒΠΏΠΏ Π·Π°Π΄Π°Ρ‡), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ этапы Ρ†ΠΈΠΊΠ»Π° событий

Для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ понимания Ρ†ΠΈΠΊΠ»Π° событий, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ этапС. Β Π’ графичСском Π²ΠΈΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ†ΠΈΠΊΠ»Π° событий ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

Рассмотрим этапы Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. ПолноС описаниС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС.

Timers

На Π΄Π°Π½Π½ΠΎΠΌ этапС выполняСтся ΠΊΠΎΠ΄, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· setTimeout() ΠΈΠ»ΠΈ setInterval().

IO Callbacks

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΊΠΎΠ»Π±Π΅ΠΊΠΈ. Как Π±Ρ‹Π»ΠΎ сказано Ρ€Π°Π½Π΅Π΅, ΠΏΠΎΡ‡Ρ‚ΠΈ вСсь ΠΊΠΎΠ΄ Π² Node.js β€” ΠΊΠΎΠ»Π±Π΅ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ входящий http запрос Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ каскад ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠ²), Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΏΠΎΡ‡Ρ‚ΠΈ вСсь ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ выполняСтся Π½Π° этом этапС.

IO Polling

ΠžΠΏΡ€ΠΎΡ Π½ΠΎΠ²Ρ‹Ρ… событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π°.

Set Immediate

ВыполняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, зарСгистрированныС Ρ‡Π΅Ρ€Π΅Π·Β setImmediate().

Close

На Π΄Π°Π½Π½ΠΎΠΌ этапС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ всС ΠΊΠΎΠ»Π±Π΅ΠΊΠΈ для событий on(β€˜close’).

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ†ΠΈΠΊΠ»Π° событий

ΠœΡ‹ Π·Π½Π°Ρ‡Π΅ΠΌ, Ρ‡Ρ‚ΠΎ всС Π² node.js ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ выполняСтся Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ» событий. А Π·Π½Π°Ρ‡ΠΈΡ‚, Ссли ΠΌΡ‹ смоТСм ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅Ρ€Ρ‚ΠΈΡ€ΠΈΠΊΠΈ, ΠΌΡ‹ смоТСм достовСрно Π·Π½Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ состояниС ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния.

К соТалСнию, Π½Π΅Ρ‚ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ API для получСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Ρ†ΠΈΠΊΠ»Π° событий, поэтому каТдая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° прСдставляСт свой Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ.

Частота Ρ‚ΠΈΠΊΠΎΠ²

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ‚ΠΈΠΊΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΊΠ°

ВрСмя выполнСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΊΠ°.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ модуля ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΡ‚Β Dynatrace.

ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ частоты ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚ΠΈΠΊΠ° Π² дСйствии

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ сцСнарии, использовано ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° express.js, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ осущСствляСт Π²Ρ‹Π·ΠΎΠ² Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ http сСрвСр.

Π§Π΅Ρ‚Ρ‹Ρ€Π΅ сцСнария тСстирования:

1. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ

НСт входящих запросов.

2. ab -c 5

5 ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Ρ… запросов ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ

3. ab -c 10

10 ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Ρ… запросов ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ

4. ab -c 10 (намСрСнная Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΡ‚Π²Π΅Ρ‚Π°)

Http сСрвСр Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· с Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π² 1 сСкунду. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ запросов, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚Π°.

На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ интСрСсныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹: частота ΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΊΠΎΠ² Ρ†ΠΈΠΊΠ»Π° событий динамичСски подстраиваСтся ΠΏΠΎΠ΄ выполняСмыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ простаиваСт, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… выполнСния Π·Π°Π΄Π°Ρ‡ (Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), Β Ρ†ΠΈΠΊΠ» событий Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° минимальной частотС, Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ входящих событий.

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΆΠ΅ входящСй Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π½Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹, Ρ†ΠΈΠΊΠ» событий Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ частоту Ρ‚ΠΈΠΊΠΎΠ² ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅.

Будя ΠΏΠΎ всСму, Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния достигаСтся Π½Π° 5 ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ….

НС смотря Π½Π° всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ этих Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΡ‹ ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ этап занял сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ‚ΠΈΠΊΠ΅. Β Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ ΠΏΠ°Ρ€Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ асинхронная Π·Π°Π΄Π°Ρ‡Π° ΠΎΠΆΠΈΠ΄Π°Π»Π° выполнСния ΠΏΡƒΠ»ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

ВысокоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ занятости ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡƒΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Для наглядности, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ изобраТСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ модуля Sharp. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ β€” довольно слоТная опСрация ΠΈ Sharp Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ» ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Запустив снова ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ Apache bench с ΠΏΡΡ‚ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ врСмя оТидания ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вырастаСт практичСски с нуля Π΄ΠΎ 8-10 мс Π² срСднСм ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 20 мс Π² ΠΏΠΈΠΊΠ°Ρ….

Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ†ΠΈΠΊΠ»Π° событий

Данная ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ, созданной ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ setTimeout().

ВысокоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» событий занят ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠ².

Для дСмонстрации, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π΅Π΅ числа Π€ΠΈΠ±ΠΎΠ½Π°Ρ‡Ρ‡ΠΈ Π½Π΅ самым ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ способом.ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ всС Ρ‚ΠΎΠΉ ΠΆΠ΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ab ΠΈ пяти ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ·-Π·Π° заполнСния ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ»Π±Π΅ΠΊΠΎΠ², Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ вырастаСт врСмя Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ†ΠΈΠΊΠ»Π° событий.

ВсС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ node.js ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ.

Настройка Ρ†ΠΈΠΊΠ»Π° событий

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, сами ΠΏΠΎ сСбС, Π½Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прилоТСния. НуТны ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ дСйствия, основанныС Π½Π° Π·Π½Π°Π½ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. НСсколько совСтов, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρ†ΠΈΠΊΠ» событий каТСтся ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ.

ИспользованиС всСх доступных ядСр CPU

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Node.js выполняСтся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅. Π’ условиях соврСмСнных многоядСрных процСссоров, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ распрСдСляСтся Π½Π° всС доступныС ядра ΠΈ ΠΎΠ½ΠΈ ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‚.ИспользованиС модуля cluster позволяСт node Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ процСссы Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ доступноС ядро. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс ΠΈΠΌΠ΅Π΅Ρ‚ свой Ρ†ΠΈΠΊΠ» событий ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ процСсс ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ распрСдСляСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ процСссами.

Настройка ΠΏΡƒΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, libuv создаСт ΠΏΡƒΠ» ΠΈΠ· 4 ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния UV_THREADPOOL_SIZE.

Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ»Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ расходу ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ/ΠΈΠ»ΠΈ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ этой настройкС с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ.

Π”Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ спСцифичСских Π·Π°Π΄Π°Ρ‡

Если Node.js покаТСтся Π²Π°ΠΌ Π½Π΅ самой подходящСй ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° вычислСний, ΠΌΠΎΠΆΠ½ΠΎ просто вынСсти ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π·Π°Π΄Π°Ρ‡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСрвис, написанный Π½Π° Π±ΠΎΠ»Π΅Π΅ подходящСм языкС.

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ

  • Π¦ΠΈΠΊΠ» событий β€” это основа прилоТСния Node.js.
  • Π•Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° часто нСдопонимаСтся β€” Π½Π° самом Π΄Π΅Π»Π΅, это Π½Π°Π±ΠΎΡ€ этапов, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ².
  • На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‚ встроСнного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° получСния ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Ρ†ΠΈΠΊΠ»Π° событий, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сторонних Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.
  • ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π³Π΄Π΅ находятся ΡƒΠ·ΠΊΠΈΠ΅ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ мСста.

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ событий — ГЛАВНАЯ

Instagram Error: Error validating access token: Session has expired on Friday, 15-Jan-21 00:21:22 PST. The current time is Saturday, 08-May-21 16:13:02 PDT.

ВСхничСскоС обСспСчСниС мСроприятий

Π²Π°ΠΆΠ½Ρ‹ΠΉ элСмСнт любого мСроприятия, вСдь ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ оборудования ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚Β ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ яркоС событиС.Β ΠžΡ‚ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊΠΎΠ² Π΄ΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… мСроприятий для любого вашСго события ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ тСхничСского обСспСчСния.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π° Π²Π°ΡˆΠΈΡ… мСроприятиях Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ качСствСнноС тСхничСскоС обСспСчСниС?

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΠΌ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях

НичСго Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ! ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваш Instagram ID ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠœΠ°Ρ€ΠΊΠ΅Ρ€ Доступа ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹

НАШ Π‘Π›ΠžΠ“

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‹, Π΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ собствСнными впСчатлСниями ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°ΠΌΠΈ.

Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ВСхнологиями событий — это Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎ всС Π±ΡƒΠ΄Π΅Ρ‚ воврСмя,качСствСнно ΠΈ ΠΏΠΎ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΠΉ Ρ†Π΅Π½Π΅. Бпасибо, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΅ΡΡ‚ΡŒ! И постоянно Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ для мСня ΠΎΡ‡Π΅Π½ΡŒ Ρ†Π΅Π½Π½ΠΎ!.

Компания Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠΉ β€” наши Π΄Π°Π²Π½ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡ. ΠœΡ‹ Ρ†Π΅Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π½ΠΈΠΌΠΈ, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Π·Π° Π»ΠΎΡΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠ²ΠΎΠ΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, Π·Π° Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ Π·Π° ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΎΡ‚Π΄Π°Ρ‡Ρƒ своСму Π΄Π΅Π»Ρƒ. Π’ Π½Π°ΡˆΠΈΡ… завСдСниях всСгда Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅Ρ€Ρ‚Ρ‹ благодаря ΠΊΠΎΠΌΠ°Π½Π΄Π΅ «Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠΉ» πŸ™‚

Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ выступлСния ΠΊΠ°Π²Π΅Ρ€ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ качСство ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ оборудования Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ΅. ИмСнно поэтому всС наши ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ — NiNa Band, Gold&Dance ΠΈ Cherry’s Band, с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с «Π’Схнологиями Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠΉ». Π Π°ΠΉΠ΄Π΅Ρ€Ρ‹ всСгда ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ заявлСнным трСбованиям ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠ², рСбята всСгда ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚Π»ΠΈΠ²Ρ‹, Π° качСство Ρ€Π°Π±ΠΎΡ‚Ρ‹ — Π½Π° Π²Ρ‹ΡΡˆΠ΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.
БСгодня ΠΌΠ°Π»ΠΎ просто ΡΠ΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠΊΠ°Ρ‚, ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ сСрвис ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅. Π‘ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ скаТу, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с «Π’Π‘»- ΠΎΠ΄Π½ΠΎ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅: нашим артистам всСгда ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ Π½Π° сцСнС, Π° Π·Π²ΡƒΠΊ Π² Π·Π°Π»Π΅ всСгда оставляСт ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² события ΠΈ гостСй Π² восторгС.

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠΉ — компания, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π½Π° Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³Π°. Π§Π΅Ρ‚Π²Π΅Ρ€ΠΎΠ½ΠΎΠ³ΠΎΠ³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ВсС Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π’Π‘ Π½Π΅ Π»Π°ΡŽΡ‚, Π½Π΅ ΠΊΡƒΡΠ°ΡŽΡ‚, Π° ΠΎΠ·Π²ΡƒΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈ ΠΎΡΠ²Π΅Ρ‰Π°ΡŽΡ‚! Π’Π‘ -Π»ΡƒΡ‡ΡˆΠΈΠΉ Π΄Ρ€ΡƒΠ³ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°. Π’ условиях полярной Π·ΠΈΠΌΡ‹ Π’Π‘ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ (Ρ‚Π΅ΠΏΠ»ΠΎ с Π½ΠΈΠΌΠΈ, свСтло) ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ΄Π½Π° Π½ΠΎΠ³Π° здСсь, другая Ρ‚Π°ΠΌ. Π”ΡƒΠΌΠ°ΡŽ, Π½Π°ΠΌΡ‘ΠΊ поняли. Π’Π‘ -БыстрыС, яркиС, Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅, ΠΊΡ€ΡƒΡ‚Ρ‹Π΅, Π΄Π°ΠΆΠ΅ Ссли Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΡ…ΠΌΠ°Ρ‚Ρ‹Π΅. Но ΠΎΠ½ΠΎ ΠΈ понятно, Π·Π°ΠΊΠ°Π·ΠΎΠ²-Ρ‚ΠΎ Π½Π΅ ΠΌΠ°Π»ΠΎ. Π€ΡŒΡŽΡ‚ΡŒ!! И ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ ΠΌΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Π²Π°ΠΌ, -волосы Π½Π°Π·Π°Π΄!

Подводя ΠΈΡ‚ΠΎΠ³ΠΈ 2019 Π³ΠΎΠ΄Π°! Наша ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π½ΠΎΡΡ‚ΡŒ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ²Ρ‹Π³ΠΎΠ΄Π½ΠΎΠ΅ сотрудничСство с ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ «Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠΉ».Β 
ΠœΠ΅ΡΡ‚Π°ΠΌΠΈ ΠΌΡ‹ с Π²Π°ΠΌΠΈ осущСствляли Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠΏΠ»ΠΎΡ‚ΠΈΡ‚ΡŒ. БотрудничСство с этой ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Π½Π΅ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Команда 24 часа Π² сутки Π±Ρ‹Π»Π° Π½Π° связи ΠΈ ΠΌΠΎΠ³Π»Π° ΠΏΡ€ΠΎΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΠ²ΡˆΠ΅ΠΌΡƒ вопросу.
Бпасибо вам Π·Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π·Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ, Π² любой Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΠ²ΡˆΠ΅ΠΉ ситуации ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ — Π·Π° ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ настроСниС Π½Π° ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ΅.

ΠšΠ°ΠΉΡ„, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π’. Π‘. просто, Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ. Π‘ΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ†Π΅Π½Π°-качСство ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅. ВсСм Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ.

событий JavaScript


HTML-события — это Β«Π²Π΅Ρ‰Π΅ΠΉΒ» , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ происходят с элСмСнтами HTML.

Когда JavaScript ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° HTML-страницах, JavaScript ΠΌΠΎΠΆΠ΅Ρ‚
«Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ»
Π½Π°
эти события.


HTML-события

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ HTML ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² событий HTML:

  • Π’Π΅Π±-страница HTML Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ
  • ПолС Π²Π²ΠΎΠ΄Π° HTML ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ
  • НаТата ΠΊΠ½ΠΎΠΏΠΊΠ° HTML

Часто, ΠΊΠΎΠ³Π΄Π° ΡΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ события, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

JavaScript позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ событий.

HTML позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий, с ΠΊΠΎΠ΄ΠΎΠΌ JavaScript , Π² элСмСнты HTML.

Π’ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…:

< элСмСнт
событиС = Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ JavaScript >

Π‘ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ:

< элСмСнт
событиС = « Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ JavaScript » >

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ onclick (с ΠΊΠΎΠ΄ΠΎΠΌ) добавляСтся ΠΊ

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ сам »

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄ JavaScript измСняСт содСрТимоС
элСмСнт с.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄ измСняСт содСрТимоС
собствСнный элСмСнт (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ , этот .innerHTML ):

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉ сам »

Код JavaScript

часто состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк. Π§Π°Ρ‰Π΅ всСго ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² событий:



ΠžΠ±Ρ‰ΠΈΠ΅ события HTML

Π’ΠΎΡ‚ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… распространСнных событий HTML:

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ ОписаниС
Π½Π° Π·Π°ΠΌΠ΅Π½Ρƒ ИзмСнСн элСмСнт HTML
onclick ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ элСмСнт HTML
Π½Π° ΠΌΡ‹ΡˆΠΊΠ΅ Π½Π°Π΄ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ Π½Π° элСмСнт HTML
onmouseout ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ ΠΎΡ‚ элСмСнта HTML
onkeydown ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅
Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ страницы

Бписок Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π½Π΅Π΅: W3Schools Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ JavaScript Бобытия HTML DOM.


Π§Ρ‚ΠΎ ΡƒΠΌΠ΅Π΅Ρ‚ JavaScript?

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий

ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, дСйствий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ,
ΠΈ дСйствий Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°:

  • Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ страницы
  • Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ страницы
  • ДСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ
  • ΠšΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅
  • И ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ …

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ JavaScript с событиями ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

  • Атрибуты событий HTML ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ JavaScript Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ
  • Атрибуты события HTML ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ свои собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий элСмСнтам HTML
  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ событий
  • И ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅…

Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС ΠΎ событиях ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… событий Π² Π³Π»Π°Π²Π°Ρ… HTML DOM.



Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ — Π²Π΅Π±-API | MDN

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Event прСдставляСт событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ происходит Π² DOM.

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ΠΎ дСйствиСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ ΠΈΠ»ΠΈ наТатия Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, Π»ΠΈΠ±ΠΎ сгСнСрировано API для отобраТСния Ρ…ΠΎΠ΄Π° выполнСния асинхронной Π·Π°Π΄Π°Ρ‡ΠΈ. Π•Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° HTMLElement.click () элСмСнта, ΠΈΠ»ΠΈ ΠΏΡƒΡ‚Π΅ΠΌ опрСдСлСния события с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π΅Π³ΠΎ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ Ρ†Π΅Π»ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ EventTarget.dispatchEvent () .

БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠ² событий, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ интСрфСйсы, основанныС Π½Π° основном интСрфСйсС Event . Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ само ΠΏΠΎ сСбС содСрТит свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх событий.

МногиС элСмСнты DOM ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ настроСны Π½Π° ΠΏΡ€ΠΈΠ΅ΠΌ (ΠΈΠ»ΠΈ «ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΠ΅») этих событий ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (ΠΈΠ»ΠΈ «ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ»).ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ (ΠΈΠ»ΠΈ Β«ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡŽΡ‚ΡΡΒ») ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ элСмСнтам HTML (Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ <сцСнарий> document.getElementById ('buttonId') .addEventListener ('click', () => console.log ('Clicked!'));

Π­Ρ‚ΠΎ способ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ событий ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта, Π² частности ΠΊΠ½ΠΎΠΏΠΊΠΈ.

А ΠΊΠ°ΠΊ насчСт ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ событий Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ…? Π’ΠΎΡ‚ возмоТная рСализация:

  
<сцСнарий> const buttons = document.getElementsByClassName ('buttonClass'); for (ΠΊΠ½ΠΎΠΏΠΊΠ° const ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ) {button.addEventListener ('click', () => console.log ('Clicked!')); }

ВзглянитС Π½Π° Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Codesandbox, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Бписок ΠΊΠ½ΠΎΠΏΠΎΠΊ повторяСтся для (постоянная ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ) , ΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ прикрСпляСтся Π½ΠΎΠ²Ρ‹ΠΉ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ½ΠΎΠΏΠΊΠ° добавляСтся ΠΈΠ»ΠΈ удаляСтся ΠΈΠ· списка, Π²Π°ΠΌ придСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΠΈ событий.

Π•ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄?

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΈ использовании шаблона дСлСгирования событий для ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ событий Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтах трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий.

Π”Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ события ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ особСнности ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° распространСния события . Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ сначала Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² распространСнии событий.

2. РаспространСниС события

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ HTML:

  
  
    

На ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтах запускаСтся событиС Ρ‰Π΅Π»Ρ‡ΠΊΠ°? Π‘Π΅Π· сомнСния, сама ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ событиС наТатия.Но Ρ‚Π°ΠΊΠΆΠ΅ … всС ΠΏΡ€Π΅Π΄ΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ Π΄Π°ΠΆΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈ ΠΎΠΊΠ½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Ρ‰Π΅Π»Ρ‡ΠΊΠ° распространяСтся Π² 3 Ρ„Π°Π·Ρ‹:

  1. Π€Π°Π·Π° Π·Π°Ρ…Π²Π°Ρ‚Π° — Начиная с ΠΎΠΊΠ½Π° , Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ элСмСнта, событиС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π²Π½ΠΈΠ· Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ элСмСнта
  2. ЦСлСвая Ρ„Π°Π·Π° — Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ запускаСтся для элСмСнта, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ»
  3. ΠŸΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²Π°Ρ Ρ„Π°Π·Π° — НаконСц, событиС всплываСт Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ элСмСнта Π΄ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ элСмСнта, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΎΠΊΠ½Π° .

Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ captureOrOptions ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  element.addEventListener (Ρ‚ΠΈΠΏ события, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ [, captureOrOptions]);  

позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ события Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… этапах.

  • Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ captureOrOptions отсутствуСт, false ΠΈΠ»ΠΈ {capture: false} , Ρ‚ΠΎ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ события Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ Ρ„Π°Π·
  • Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ€Π°Π²Π΅Π½ true ΠΈΠ»ΠΈ {capture: true} , Ρ‚ΠΎ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ события Ρ„Π°Π·Ρ‹ Π·Π°Ρ…Π²Π°Ρ‚Π° .

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ события Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π½Π° этапС Π·Π°Ρ…Π²Π°Ρ‚Π°, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ Π½Π° элСмСнтС :

  document.body.addEventListener ('Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ', () => {
  console.log ('Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Ρ‰Π΅Π»Ρ‡ΠΊΠ° ΠΏΠΎ Ρ‚Π΅Π»Ρƒ Π² Ρ„Π°Π·Π΅ Π·Π°Ρ…Π²Π°Ρ‚Π°');
}, ΠΏΡ€Π°Π²Π΄Π°);  

Π’ этой дСмонстрации Codesandbox, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² консоли, ΠΊΠ°ΠΊ распространяСтся событиС.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, ΠΊΠ°ΠΊ распространСниС событий ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ события Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ?

Алгоритм прост: ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ элСмСнту ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚Π΅ событиС восходящСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ.ИмСнно Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий.

3. Π”Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ мСроприятия

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ событий, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ:

  
<сцСнарий> document.getElementById ('ΠΊΠ½ΠΎΠΏΠΊΠΈ') .addEventListener ('Ρ‰Π΅Π»Ρ‡ΠΎΠΊ', событиС => { if (event.target.className === 'buttonClass') { приставка.log ('Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅!'); } });

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Codesandbox ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ — Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ «НаТмитС!Β» Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ записано Π½Π° консоль.

ИдСя дСлСгирования событий проста. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ событий нСпосрСдствСнно ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ, Π²Ρ‹, , Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡŽ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ

. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта ΡƒΠ»Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ событиС восходящСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ (вспомнитС распространСниС события?).

Для использования дСлСгирования событий трСбуСтся 3 шага:

Π¨Π°Π³ 1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт для отслСТивания событий

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅

являСтся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ элСмСнтом ΠΊΠ½ΠΎΠΏΠΎΠΊ.

Π¨Π°Π³ 2. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ элСмСнту

document.getElementById ('buttons') .addEventListener ('click', handler) прикрСпляСт ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ элСмСнту ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π­Ρ‚ΠΎΡ‚ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° Ρ‰Π΅Π»Ρ‡ΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ событиС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ всплываСт Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² (благодаря Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ события).

Π¨Π°Π³ 3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅

event.target , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ элСмСнт

ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ вызываСтся функция-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ события . Бвойство event.target — это элСмСнт, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ событиС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ являСтся ΠΊΠ½ΠΎΠΏΠΊΠ°:

 
  .addEventListener ('Ρ‰Π΅Π»Ρ‡ΠΎΠΊ', событиС => {
    Ссли (event.target.className === 'buttonClass') {console.log ('НаТмитС!');
    }
  });  

Π’ качСствС примСчания, событиС .currentTarget ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° элСмСнт, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ нСпосрСдствСнно ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ event.currentTarget — это

.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ прСимущСство шаблона дСлСгирования событий: вмСсто присоСдинСния ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ , ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ сдСлано Ρ€Π°Π½Π΅Π΅, благодаря Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ событий Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ событий .

4. РСзюмС

Когда происходит событиС Ρ‰Π΅Π»Ρ‡ΠΊΠ° (ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ распространяСтся):

  • Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ пСрСмСщаСтся Π²Π½ΠΈΠ· ΠΎΡ‚ ΠΎΠΊΠ½Π° , Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° , ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ элСмСнта ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ элСмСнта (Ρ„Π°Π·Π° Π·Π°Ρ…Π²Π°Ρ‚Π°)
  • Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ происходит Π½Π° Ρ†Π΅Π»ΠΈ (цСлСвая Ρ„Π°Π·Π°)
  • НаконСц, событиС всплываСт Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² Ρ†Π΅Π»ΠΈ Π΄ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ элСмСнта, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΎΠΊΠ½Π° (Ρ„Π°Π·Π° пузыря).

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ называСтся распространСния события .

Π”Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий — ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ шаблон, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ события Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтах, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, трСбуСтся 3 шага:

  1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ элСмСнт элСмСнтов, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ события
  2. ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ элСмСнту
  3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ event.target для Π²Ρ‹Π±ΠΎΡ€Π° Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… элСмСнтов

Π£ вас Π΅ΡΡ‚ΡŒ вопросы ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ распространСния ΠΈΠ»ΠΈ дСлСгирования событий? Если Π΄Π°, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅, поТалуйста, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½ΠΈΠΆΠ΅!

Π’ΠΈΠΏΡ‹ событий JavaScript — 8 основных Ρ‚ΠΈΠΏΠΎΠ² для формирования Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ JS!

ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ³Π°ΡΡΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄ Π² сСрии руководств DataFlair JavaScript, сСгодня ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… событий JavaScript.Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ событий Π² JavaScript, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠœΡ‹ использовали событиС ΠΌΡ‹ΡˆΠΈ Β«Ρ‰Π΅Π»Ρ‡ΠΎΠΊΒ» Π² нашСм ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ руководствС, Π½ΠΎ Π² JavaScript доступно Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π²Π°ΡˆΡƒ страницу Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΠΉ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Π½Π°ΡˆΡƒ Ρ‚Π΅ΠΌΡƒ событий с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ событий, Π² зависимости ΠΎΡ‚ ΠΈΡ… примСнСния.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ события Π½Π° Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ —

  • БпСцификация W3 DOM : W3C управляСт всСми спСцификациями событий DOM, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с элСмСнтами Ρ„ΠΎΡ€ΠΌΡ‹.
  • БпСцификация HTML5: Бюда входят всС события, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ с HTML. К Π½ΠΈΠΌ относятся ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ°, Π²Π²ΠΎΠ΄ ΠΈ Ρ‚. Π”. НовыС дополнСния ΠΊ этой ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ hashchange, beforeunload ΠΈ Ρ‚. Π”.
  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° : спСцификации W3 Π΅Ρ‰Π΅ Π½Π΅ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ эти события. Они ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с устройствами с сСнсорным экраном, ΠΈ события Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ touchstart, touchend ΠΈ Ρ‚. Π”.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ JavaScript Class

Π’ΠΈΠΏΡ‹ событий JavaScript

Π­Ρ‚ΠΎ 8 Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ‚ΠΈΠΏΡ‹ событий JavaScript, обсуТдаСмыС Π½ΠΈΠΆΠ΅:

1.Бобытия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса

Они происходят Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ любого взаимодСйствия с ΠΎΠΊΠ½ΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Π° Π½Π΅ со страницСй HTML. Π’ этих событиях ΠΌΡ‹ присоСдиняСм ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΎΠΊΠ½Π°, Π° Π½Π΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. НиТС пСрСчислСны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Π΅Π±-страница Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΡƒΠ·Π»Ρ‹ элСмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, скриптов ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π­Ρ‚ΠΎ событиС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠΊΠΈΠ΄Π°ΡŽΡ‚ страницу, Ρ‚. Π•. Π’Π΅Π±-страница выгруТаСтся.Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° страницы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ происходит ΠΈΠ·-Π·Π° запроса Π½ΠΎΠ²ΠΎΠΉ страницы.

Π­Ρ‚ΠΎ событиС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ JavaScript ΠΈΠ»ΠΈ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ рСсурс.

Он срабатываСт, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ измСняСм Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Но Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ это событиС, поэтому ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования этого события для запуска слоТного ΠΊΠΎΠ΄Π°; это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ страницу ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‡ΠΈΠ²ΠΎΠΉ.

Π­Ρ‚ΠΎ событиС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π²Π²Π΅Ρ€Ρ… / Π²Π½ΠΈΠ·. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊΠΎ всСй страницС ΠΈΠ»ΠΈ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ элСмСнту Π½Π° страницС.

Π’Ρ‹ провСряли популярный Π±Π»ΠΎΠ³ DataFlair ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… JavaScript?

2. Бобытия фокуса ΠΈ размытия

Π­Ρ‚ΠΈ события ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° элСмСнты HTML, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ / Ρ‚Π΅Ρ€ΡΡŽΡ‚ фокус. Π§Π°Ρ‰Π΅ всСго ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

  • Для отобраТСния подсказок ΠΈΠ»ΠΈ ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с элСмСнтом Π² Ρ„ΠΎΡ€ΠΌΠ΅. Подсказки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² элСмСнтах, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ взаимодСйствуСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.
  • Для запуска ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта управлСния ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π½Π΅ доТидаясь ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Ρ„ΠΎΡ€ΠΌΡ‹.

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события фокуса ΠΈ размытия ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

Π­Ρ‚ΠΎ событиС запускаСтся для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° DOM, ΠΊΠΎΠ³Π΄Π° элСмСнт ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ фокус.

Π­Ρ‚ΠΎ срабатываСт для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° DOM, ΠΊΠΎΠ³Π΄Π° элСмСнт тСряСт фокус.

Π­Ρ‚ΠΎ событиС совпадаСт с событиСм фокуса. Но Firefox ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ событиС focusin.

Π­Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ событиС, Ρ‡Ρ‚ΠΎ ΠΈ событиС размытия.Π­Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ событий Π² JavaScript, поэтому сСйчас ΠΎΠ½ Π½Π΅ поддСрТиваСтся Π² Firefox.

Бобытия focus ΠΈ blur ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π·Π°Ρ…Π²Π°Ρ‚Π°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ события focusin ΠΈ focusout ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ Π·Π°Ρ…Π²Π°Ρ‚, Ρ‚Π°ΠΊ ΠΈ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΡ‚ΠΎΠΊΠ° событий.

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΎ JavaScript Framework

3. Бобытия ΠΌΡ‹ΡˆΠΈ

Π­Ρ‚ΠΈ события ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ΡˆΡŒ пСрСмСщаСтся ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ. ВсС элСмСнты страницы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ эти события ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ восходящий ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.Π­Ρ‚ΠΈ дСйствия ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° устройствах с сСнсорным экраном. ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ стандартного повСдСния событий ΠΌΡ‹ΡˆΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события ΠΌΡ‹ΡˆΠΈ Π² JavaScript ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

Π­Ρ‚ΠΎ событиС запускаСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π»Π΅Π²ΡƒΡŽ). Π­Ρ‚ΠΎ событиС Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Enter Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅, ΠΊΠΎΠ³Π΄Π° элСмСнт находится Π² фокусС.

БСнсорный экран: КасаниС экрана дСйствуСт ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ.

Π­Ρ‚ΠΎ событиС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ быстро Π΄Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ.

БСнсорный экран: Π”Π²ΠΎΠΉΠ½ΠΎΠ΅ касаниС экрана дСйствуСт ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ.

Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… события ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ элСмСнту, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Ρ‚Π΅ΠΌ элСмСнтам, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°ΠΆΠΈΠΌΠ°ΡŽΡ‚, ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ доступны Ρ‡Π΅Ρ€Π΅Π· Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΡŽ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. ВсС описанныС Π½ΠΈΠΆΠ΅ события ΠΌΡ‹ΡˆΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ.

Π‘Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π»ΡŽΠ±ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ.

БСнсорный экран: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ событиС touchstart .

Π‘Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ отпускаСт ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ.

БСнсорный экран: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ событиС touchend .

Π£ нас Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ события mousedown ΠΈ mouseup , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ пСрСтаскивания ΠΈΠ»ΠΈ элСмСнты управлСния ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€. НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ событиС click — это комбинация событий mousedown ΠΈ mouseup .

Он срабатываСт, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ курсор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½ΡŒΡˆΠ΅ находился Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ элСмСнта, Π²Π½ΡƒΡ‚Ρ€ΠΈ элСмСнта.МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ срабатываСт, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°Π²ΠΎΠ΄ΠΈΠΌ курсор Π½Π° элСмСнт.

Он срабатываСт, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ курсор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½ΡŒΡˆΠ΅ находился Π²Π½ΡƒΡ‚Ρ€ΠΈ элСмСнта, Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ элСмСнта. МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ срабатываСт, ΠΊΠΎΠ³Π΄Π° курсор пСрСмСщаСтся с элСмСнта.

Бобытия mouseover ΠΈ mouseout ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ внСшний Π²ΠΈΠ΄ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π° нашСй Π²Π΅Π±-страницС. ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ этому являСтся использованиС псСвдокласса CSS: hover .

Π‘Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ курсор Π²ΠΎΠΊΡ€ΡƒΠ³ элСмСнта.Π­Ρ‚ΠΎ событиС часто запускаСтся.

БСйчас самоС врСмя ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Ρ†ΠΈΠΊΠ»Π°Ρ… JavaScripts. ΠΠ•ΠžΠ‘Π₯ΠžΠ”Π˜ΠœΠž ΠŸΠ ΠžΠ’Π•Π Π˜Π’Π¬ !!

4. Бобытия ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

Π­Ρ‚ΠΈ события Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π½Π° любом устройствС, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ взаимодСйствуСт с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ.

Π­Ρ‚ΠΎ событиС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ значСния ΠΈΠ»ΠΈ