Skip to content

Commit 1acb305

Browse files
committed
article.md - capturing - 90%
1 parent 53f5415 commit 1acb305

File tree

1 file changed

+29
-31
lines changed

1 file changed

+29
-31
lines changed

2-ui/2-events/02-bubbling-and-capturing/article.md

Lines changed: 29 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -117,41 +117,40 @@ Biasanya tidak ada keperluan utama yang membuat kita harus menghentikan proses m
117117

118118
## Penangkapan (_Capturing_)
119119

120-
There's another phase of event processing called "capturing". It is rarely used in real code, but sometimes can be useful.
120+
Ada juga sebuah fase pada proses peristiwa yang disebut dengan Penangkapan (_capturing_). proses ini jarang digunakan, tapi akan berguna pada saat dibutuhkan.
121121

122-
The standard [DOM Events](http://www.w3.org/TR/DOM-Level-3-Events/) describes 3 phases of event propagation:
122+
Standar sebuah [Peristiwa DOM](http://www.w3.org/TR/DOM-Level-3-Events/) terbagi menjadi 3 fase, yaitu:
123123

124-
1. Capturing phase -- the event goes down to the element.
125-
2. Target phase -- the event reached the target element.
126-
3. Bubbling phase -- the event bubbles up from the element.
124+
1. fase penangkapan (_capturing phase_) -- peristiwa mulai mencari elemen.
125+
2. fase target (_target phase_) -- peristiwa menemukan elemen.
126+
3. fase mengelembung (_bubbling phase_) -- peristiwa mulai naik ke atas dari elemen dasar.
127127

128-
Here's the picture of a click on `<td>` inside a table, taken from the specification:
128+
Berikut ini sebuah gambar tentang klik yang terjadi pada `<td>` didalam sebuah tabel, yang diambil dari spesifikasi:
129129

130130
![](eventflow.svg)
131131

132-
That is: for a click on `<td>` the event first goes through the ancestors chain down to the element (capturing phase), then it reaches the target and triggers there (target phase), and then it goes up (bubbling phase), calling handlers on its way.
132+
Maka: untuk klik pada `<td>` peristiwa (_event_) akan pertama melewati elemen paling atas dan turun ke elemen yang bawaha (fase penangkapan), kemudian pada saat mencapai elemen yang di target akan di jalankan pada elemen tersebut (fase target), dan kemudia peristiwa itu akan naik ke atas (fase mengelembung), sambil memanggil penangan (_handler_) yang ada.
133133

134-
**Before we only talked about bubbling, because the capturing phase is rarely used. Normally it is invisible to us.**
134+
**Sebelumnya kita hanya membahas tentang proses pengelembungan, karena proses penangkapan jarang digunakan, biasanya proses ini tidak terlihat oleh kita.**
135135

136-
Handlers added using `on<event>`-property or using HTML attributes or using two-argument `addEventListener(event, handler)` don't know anything about capturing, they only run on the 2nd and 3rd phases.
136+
Penangan (_Handlers_) yang di tambahkan menggunakan `on<event>`-properti atau menggunakan atribut HTML atau menggunakan dua argumen `addEventListener(event, handler)` tidak mengetahui tentang proses penangkapan, mereka hanya menjalankan fase ke 2 dan fase ke 3.
137137

138-
To catch an event on the capturing phase, we need to set the handler `capture` option to `true`:
138+
Untuk menangkap sebuah peristiwa pada fase penangkapan, kita perlu mengatur penangan (_handler_) pilihan `capture` menjadi `true`:
139139

140140
```js
141141
elem.addEventListener(..., {capture: true})
142-
// or, just "true" is an alias to {capture: true}
142+
// atau, hanya "true" karena merupakan alias dari {capture: true}
143143
elem.addEventListener(..., true)
144144
```
145145

146-
There are two possible values of the `capture` option:
146+
Hanya ada 2 kemungkinan nilai dari pilihan `capture`:
147147

148-
- If it's `false` (default), then the handler is set on the bubbling phase.
149-
- If it's `true`, then the handler is set on the capturing phase.
148+
- Jika `false` (bawaan (_default_) ), maka penangan (_handler_) di atur pada fase pengelembungan atau fase ke 3.
149+
- Jika `true`, aka penangan (_handler_) di atur pada fase penangkapan atau fase pertama.
150150

151+
Catatan, sementara secara umum hanya ada 3 fase, dan fase ke dua ("fase target": peristiwa mencapai elemen yang di target) tidak di tangani secara terpisah: penangan (_handler_) pada kedua fase penangkapan dan pengelembungan di jalankan pada fase tersebut.
151152

152-
Note that while formally there are 3 phases, the 2nd phase ("target phase": the event reached the element) is not handled separately: handlers on both capturing and bubbling phases trigger at that phase.
153-
154-
Let's see both capturing and bubbling in action:
153+
Mari lihat kedua fase penangkapan dan pengelembungan:
155154

156155
```html run autorun height=140 edit
157156
<style>
@@ -169,36 +168,35 @@ Let's see both capturing and bubbling in action:
169168

170169
<script>
171170
for(let elem of document.querySelectorAll('*')) {
172-
elem.addEventListener("click", e => alert(`Capturing: ${elem.tagName}`), true);
173-
elem.addEventListener("click", e => alert(`Bubbling: ${elem.tagName}`));
171+
elem.addEventListener("click", e => alert(`Penangkapan: ${elem.tagName}`), true);
172+
elem.addEventListener("click", e => alert(`Pengelembungan: ${elem.tagName}`));
174173
}
175174
</script>
176175
```
177176

178-
The code sets click handlers on *every* element in the document to see which ones are working.
177+
Kode mengatur penangan(_handler_) klik pada *setiap* elemen yang ada di dalam dokumen untuk melihat elemen mana yang berfungsi.
179178

180-
If you click on `<p>`, then the sequence is:
179+
Jika kamu klik pada `<p>`, maka rangkaian peristiwa sebagai berikut:
181180

182-
1. `HTML` -> `BODY` -> `FORM` -> `DIV` (capturing phase, the first listener):
183-
2. `P` (target phase, triggers two times, as we've set two listeners: capturing and bubbling)
184-
3. `DIV` -> `FORM` -> `BODY` -> `HTML` (bubbling phase, the second listener).
181+
1. `HTML` -> `BODY` -> `FORM` -> `DIV` (fase penangkapan, pendengar pertama),
182+
2. `P` (fase target, dijalankan 2 kali, karena kita mengatur 2 pendengar: penangkapan dan pengelembungan),
183+
3. `DIV` -> `FORM` -> `BODY` -> `HTML` (fase pengelembungan, pendengar kedua).
185184

186-
There's a property `event.eventPhase` that tells us the number of the phase on which the event was caught. But it's rarely used, because we usually know it in the handler.
185+
Ada sebuah properti `event.eventPhase` yang akan memberikan kita nomor dari fase yang dimana peristiwa tersebut di tangkap. Tapi properti ini jarang digunakan, karena kita biasanya mendapat info itu dari penangan(_handler_) itu sendiri.
187186

188-
```smart header="To remove the handler, `removeEventListener` needs the same phase"
189-
If we `addEventListener(..., true)`, then we should mention the same phase in `removeEventListener(..., true)` to correctly remove the handler.
187+
```smart header="Untuk menghapus penangan, `removeEventListener` membutuhkan fase yang sama"
188+
Jika kita menggunakan `addEventListener(..., true)`, maka kita harus menggunakan fase yang sama pada `removeEventListener(..., true)` untuk menghapus penangan secara benar.
190189
```
191190
192-
````smart header="Listeners on same element and same phase run in their set order"
193-
If we have multiple event handlers on the same phase, assigned to the same element with `addEventListener`, they run in the same order as they are created:
191+
````smart header="Pendengar pada elemen dan fase yang sama akan dijalankan berdasarkan urutan mereka"
192+
Jika kita memiliki beberapa penangan pada fase yang sama, dan di atur pada elemen yang sama dengan menggunakan `addEventListener`, mereka akan berjalan sesuai dengan urutan mereka di buat:
194193
195194
```js
196-
elem.addEventListener("click", e => alert(1)); // guaranteed to trigger first
195+
elem.addEventListener("click", e => alert(1)); // akan selalu berjalan duluan
197196
elem.addEventListener("click", e => alert(2));
198197
```
199198
````
200199
201-
202200
## Summary
203201
204202
When an event happens -- the most nested element where it happens gets labeled as the "target element" (`event.target`).

0 commit comments

Comments
 (0)