Skip to content

Commit a4f81fe

Browse files
authored
Merge pull request #5 from HannaParsa/patch3
Update article.md
2 parents b2684dc + a3969ad commit a4f81fe

1 file changed

Lines changed: 39 additions & 18 deletions

File tree

2-ui/2-events/05-dispatch-events/article.md

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
ما نه تنها می توانیم handler ها را اختصاص دهیم، بلکه می توانیم رویدادها را از جاوا اسکریپت نیز تولید کنیم.
44

5-
از رویدادهای سفارشی می توان برای ایجاد "مولفه های گرافیکی" استفاده کرد. به عنوان مثال، یک عنصر ریشه از منوی مبتنی بر JS خودمان ممکن است رویدادهایی را ایجاد کند که می‌گوید چه اتفاقی در منو می‌افتد: باز کردن (باز کردن منو)، انتخاب (یک مورد انتخاب شده است) و غیره. کد دیگری ممکن است به رویدادها گوش دهد و آنچه را که در منو اتفاق می افتد مشاهده کند.
5+
از رویدادهای سفارشی می توان برای ایجاد "مولفه های گرافیکی" استفاده کرد. به عنوان مثال، یک عنصر ریشه از منوی مبتنی بر JS خودمان ممکن است رویدادهایی را ایجاد کند که می‌گوید چه اتفاقی در منو می‌افتد:
6+
7+
باز کردن (باز کردن منو)، انتخاب (یک مورد انتخاب شده است) و غیره. کد دیگری ممکن است به رویدادها گوش دهد و آنچه را که در منو اتفاق می افتد مشاهده کند.
68

79
ما می‌توانیم نه تنها رویدادهای کاملاً جدیدی را که برای اهداف خود اختراع می‌کنیم، بلکه همچنین رویدادهای داخلی مانند کلیک، پایین آوردن ماوس و غیره را ایجاد کنیم. ممکن است برای آزمایش خودکار مفید باشد.
810
## Event constructor
@@ -23,13 +25,34 @@ Arguments:
2325
- *Bubbles*:اگر true بود یعنی bubbled می شود.
2426
- *لغو شدن (true/false)*: اگر ویزگی مقدار true را داشت عمل پیش فرض آن لغو میشود،
2527
- به صورت پیش فرض: `{bubbles: false, cancelable: false}`.
28+
29+
## dispatchEvent
30+
31+
پس از ایجاد یک event، باید آن را روی یک element با استفاده از فراخوانی elem.dispatchEvent(event) اجرا کنیم.
32+
33+
سپس handler ها به آن واکنش نشان می دهند که گویی یک رویداد معمولی مرورگر است. اگر رویداد با bubble flag ها ایجاد شده باشد، bubbled می شود.
34+
35+
در مثال زیر رویداد کلیک در جاوا اسکریپت آغاز می شود. handler به همان روشی کار می کند که اگر روی دکمه کلیک شده باشد:
36+
```html run no-beautify
37+
<button id="elem" onclick="alert('Click!');">Autoclick</button>
38+
39+
<script>
40+
let event = new Event("click");
41+
elem.dispatchEvent(event);
42+
</script>
43+
```
44+
45+
راهی برای تشخیص یک user event "واقعی" از event تولید شده توسط اسکریپت وجود دارد.
46+
47+
ویژگی 'event.isTrusted' برای رویدادهایی که از اقدامات واقعی کاربر ناشی می شوند 'true' و برای رویدادهای تولید شده توسط اسکریپت 'false' است.
2648

2749

2850
## Bubbling example
2951

30-
We can create a bubbling event with the name `"hello"` and catch it on `document`.
3152

32-
All we need is to set `bubbles` to `true`:
53+
می‌توانیم یک bubbling event با نام `"hello"` ایجاد کنیم و آن را در `document` بگیریم.
54+
55+
تنها چیزی که نیاز داریم این است که `bubbles` را روی "true" تنظیم کنیم:
3356

3457
```html run no-beautify
3558
<h1 id="elem">Hello from the script!</h1>
@@ -50,16 +73,16 @@ All we need is to set `bubbles` to `true`:
5073
```
5174

5275

53-
Notes:
76+
نکات:
5477

55-
1. We should use `addEventListener` for our custom events, because `on<event>` only exists for built-in events, `document.onhello` doesn't work.
56-
2. Must set `bubbles:true`, otherwise the event won't bubble up.
78+
1. باید از `addEventListener` برای custom کردن event ها استفاده کرد، زیرا `on<event>` فقط برای built-in event وجود دارد و `document.onhello` کار نمیکند.
79+
2. باید `bubbles:true` را set کنیم مگرنه event bubble up نخواهد شد.
5780

58-
The bubbling mechanics is the same for built-in (`click`) and custom (`hello`) events. There are also capturing and bubbling stages.
81+
مکانیک bubbling برای built-in (`click`) و custom (`hello`) یکسان است. هم چنین مراحلی برای گرفتن و bubbling نیز وجود دارد.
5982

6083
## MouseEvent, KeyboardEvent and others
6184

62-
Here's a short list of classes for UI Events from the [UI Event specification](https://www.w3.org/TR/uievents):
85+
موارد زیر شامل یک لیست کوتاه از کلاس هایی برای UI Events از [UI Event specification](https://www.w3.org/TR/uievents) هستند:
6386

6487
- `UIEvent`
6588
- `FocusEvent`
@@ -68,11 +91,11 @@ Here's a short list of classes for UI Events from the [UI Event specification](h
6891
- `KeyboardEvent`
6992
- ...
7093

71-
We should use them instead of `new Event` if we want to create such events. For instance, `new MouseEvent("click")`.
72-
73-
The right constructor allows to specify standard properties for that type of event.
94+
اگر میخواهید رویدادی به وجود بیاوریم، باید به جای `new Event` از کلاس های بالا استفاده کنیم. برای مثال `new MouseEvent("click")`.
95+
96+
انتخاب constructor درست این امکان را میدهد که property های استاندارد را برای هر نوع از event مشخص کنیم.
7497

75-
Like `clientX/clientY` for a mouse event:
98+
مانند `clientX/clientY` برای mouse event:
7699

77100
```js run
78101
let event = new MouseEvent("click", {
@@ -86,10 +109,9 @@ let event = new MouseEvent("click", {
86109
alert(event.clientX); // 100
87110
*/!*
88111
```
112+
لطفا به یاد داشته باشد: constructor های generic `Event` اجازه این کار را نمیدهد.
89113

90-
Please note: the generic `Event` constructor does not allow that.
91-
92-
Let's try:
114+
بیایید این روش را امتحان کنیم:
93115

94116
```js run
95117
let event = new Event("click", {
@@ -103,10 +125,9 @@ let event = new Event("click", {
103125
alert(event.clientX); // undefined, the unknown property is ignored!
104126
*/!*
105127
```
128+
از نظر فنی، می‌توانیم با اختصاص مستقیم `event.clientX=100` پس از ایجاد، آن را حل کنیم. بنابراین این موضوع راحت و پیروی از قوانین است. event های ایجاد شده توسط مرورگر همیشه نوع مناسبی دارند.
106129

107-
Technically, we can work around that by assigning directly `event.clientX=100` after creation. So that's a matter of convenience and following the rules. Browser-generated events always have the right type.
108-
109-
The full list of properties for different UI events is in the specification, for instance, [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent).
130+
لیست کاملی از property ها برای event های مختلف UI به تفکیک، برای مثال، [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent).
110131

111132
## Custom events
112133

0 commit comments

Comments
 (0)