You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 2-ui/2-events/05-dispatch-events/article.md
+24-21Lines changed: 24 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,48 +6,51 @@
6
6
7
7
باز کردن (باز کردن منو)، انتخاب (یک مورد انتخاب شده است) و غیره. کد دیگری ممکن است به event ها گوش دهد و آنچه را که در منو اتفاق می افتد مشاهده کند.
8
8
9
-
ما میتوانیم نه تنها event های کاملاً جدیدی را که برای اهداف خود اختراع میکنیم، بلکه همچنین event های داخلی مانند کلیک، پایین آوردن ماوس و غیره را ایجاد کنیم. ممکن است برای آزمایش خودکار مفید باشد.
9
+
ما میتوانیم نه تنها event های کاملاً جدیدی را که برای اهداف خود اختراع میکنیم، بلکه همچنین event های داخلی مانند کلیک، پایین آوردن ماوس و غیره را ایجاد کنیم. ممکن است برای تست خودکار نرم افزار مفید باشد.
10
10
11
11
## Event constructor
12
12
13
-
کلاس های internal event یک سلسله مراتب را تشکیل می دهند، مشابه کلاس های عنصر DOM. ریشه کلاس رویداد داخلی است.
14
-
15
-
ما می توانیم object event ها را مانند این ایجاد کنیم: [Event](https://dom.spec.whatwg.org/#events)
13
+
کلاس های event متعلق به زبان یک سلسله مراتب را تشکیل می دهند، مشابه کلاس های عنصر DOM. ریشه آن، کلاس درونساخت [Event](https://dom.spec.whatwg.org/#events) است.
16
14
15
+
ما می توانیم اشیاء event را به این صورت ایجاد کنیم:
17
16
```js
18
17
letevent=newEvent(type[, options]);
19
18
```
20
19
21
20
پارامتر ها:
22
21
23
-
-*نوع*: event type, یک رشته مانند `"click"` .
24
-
-*گزینه ها*: شی ای با دو ویژگی اختیاری.
22
+
-*type*: event type, یک رشته مانند `"click"` .
23
+
-*options*: شی ای با دو ویژگی اختیاری.
25
24
-*Bubbles*:اگر true بود یعنی bubbled می شود.
26
-
-*لغو شدن (true/false)*: اگر ویزگی مقدار true را داشت عمل پیش فرض آن لغو میشود،
25
+
-*cancelable (true/false)*: اگر ویزگی مقدار true را داشت عمل پیش فرض آن لغو میشود،
27
26
- به صورت پیش فرض: `{bubbles: false, cancelable: false}`.
28
27
-
29
28
## dispatchEvent
30
29
31
-
پس از ایجاد یک event، باید آن را روی یک element با استفاده از فراخوانی elem.dispatchEvent(event) اجرا کنیم.
30
+
پس از ایجاد یک event، باید آن را روی یک element با استفاده از فراخوانی `elem.dispatchEvent(event)` اجرا کنیم.
32
31
33
32
سپس هندلر ها به آن واکنش نشان می دهند که گویی یک event معمولی مرورگر است. اگر event با bubble flag ها ایجاد شده باشد، bubbled می شود.
34
33
35
-
در مثال زیر event کلیک در جاوااسکریپت آغاز می شود. هندلر به همان روشی کار می کند که اگر روی دکمه کلیک شده باشد:
34
+
در مثال زیر رویداد `click` در جاوااسکریپت آغاز می شود. هندلر به همان روشی کار می کند که اگر روی دکمه کلیک شده باشد:
راهی برای تشخیص یک user event "واقعی" از event تولید شده توسط اسکریپت وجود دارد.
45
+
```smart header="event.isTrusted"
46
+
47
+
راهی برای تشخیص یک user event "واقعی" از event تولید شده توسط اسکریپت وجود دارد.
46
48
47
-
ویژگی 'event.isTrusted' برای event هایی که از اقدامات واقعی کاربر ناشی می شوند 'true' و برای event های تولید شده توسط اسکریپت 'false' است.
49
+
ویژگی 'event.isTrusted' برای رویدادهایی که از اقدامات کاربر واقعی ناشی می شوند 'true' و برای رویدادهای تولید شده توسط اسکریپت 'false' است.
50
+
```
48
51
49
52
50
-
## Bubbling example
53
+
## مثالی از Bubbling
51
54
52
55
53
56
میتوانیم یک bubbling event با نام `"hello"` ایجاد کنیم و آن را در `document` بگیریم.
@@ -75,10 +78,10 @@ let event = new Event(type[, options]);
75
78
76
79
نکات:
77
80
78
-
1. باید از `addEventListener` برای custom کردن event ها استفاده کرد، زیرا `on<event>` فقط برای built-in event وجود دارد و `document.onhello` کار نمیکند.
79
-
2. باید `bubbles:true` را set کنیم مگرنه event bubble up نخواهد شد.
81
+
1. باید از `addEventListener` برای شخصیسازی eventها استفاده کرد، زیرا `on<event>` فقط برای eventهای متعلق به زبان وجود دارد و `document.onhello` کار نمی کند.
82
+
2. باید `bubbles:true` را تنظیم کنیم وگرنه رویداد bubble up نخواهد شد.
80
83
81
-
مکانیک bubbling برای built-in (`click`) و custom (`hello`) یکسان است. هم چنین مراحلی برای گرفتن و bubbling نیز وجود دارد.
84
+
مکانیک bubbling برای event درونساخت (`click`) و event شخصیسازهشده (`hello`) یکسان است. هم چنین مراحلی برای capturing و bubbling نیز وجود دارد.
82
85
83
86
## MouseEvent, KeyboardEvent and others
84
87
@@ -109,6 +112,7 @@ let event = new MouseEvent("click", {
109
112
alert(event.clientX); // 100
110
113
*/!*
111
114
```
115
+
112
116
لطفا به یاد داشته باشد: constructor های generic `Event` اجازه این کار را نمیدهد.
113
117
114
118
بیایید این روش را امتحان کنیم:
@@ -125,15 +129,14 @@ let event = new Event("click", {
125
129
alert(event.clientX); // undefined, the unknown property is ignored!
126
130
*/!*
127
131
```
128
-
از نظر فنی، میتوانیم با اختصاص مستقیم `event.clientX=100` پس از ایجاد، آن را حل کنیم. بنابراین این موضوع راحت و پیروی از قوانین است. event های ایجاد شده توسط مرورگر همیشه نوع مناسبی دارند.
129
-
130
-
لیست کاملی از property ها برای event های مختلف UI به تفکیک، برای مثال، [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent).
132
+
ااز نظر فنی، میتوانیم با اختصاص مستقیم `event.clientX=100` پس از ایجاد، آن را حل کنیم. بنابراین این موضوع راحت و پیروی از قوانین است. event های ایجاد شده توسط مرورگر همیشه از نوع مناسبی هستند.
131
133
132
-
## Custom events
134
+
للیست کاملی از propertyها برای eventهای مختلف UI در مشخصات زبان وجود دارد، برای مثال، [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent).
135
+
## event شخصیسازیشد
133
136
134
-
برای انواع events های کاملاً جدید خودمان مانند `"hello"` باید از "CustomEvent جدید" استفاده کنیم. از نظر فنی [CustomEvent](https://dom.spec.whatwg.org/#customevent) با «رویداد» یکسان است،البته با یک استثنا.
137
+
برای انواع events های کاملاً جدید خودمان مانند `"hello"` باید از `new CustomEvent`استفاده کنیم. از نظر فنی [CustomEvent](https://dom.spec.whatwg.org/#customevent) با `Event` یکسان است،البته با یک استثنا.
135
138
136
-
در آرگومان دوم (object) میتوانیم یک ویژگی «detail» برای هر اطلاعات که میخواهیم با event ارسال کنیم، اضافه کنیم.
139
+
در آرگومان دوم (object) میتوانیم یک ویژگی `detail` برای هر اطلاعات که میخواهیم با event ارسال کنیم، اضافه کنیم.
0 commit comments