Skip to content

Commit 2432bac

Browse files
authored
fix small problems, line syncing
1 parent 3654fa9 commit 2432bac

1 file changed

Lines changed: 17 additions & 17 deletions

File tree

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

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

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

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

97
ما می‌توانیم نه تنها event های کاملاً جدیدی را که برای اهداف خود اختراع می‌کنیم، بلکه همچنین event های داخلی مانند کلیک، پایین آوردن ماوس و غیره را ایجاد کنیم. ممکن است برای تست خودکار نرم افزار مفید باشد.
108

@@ -13,17 +11,20 @@
1311
کلاس های event متعلق به زبان یک سلسله مراتب را تشکیل می دهند، مشابه کلاس های عنصر DOM. ریشه آن، کلاس درون‌ساخت [Event](https://dom.spec.whatwg.org/#events) است.
1412

1513
ما می توانیم اشیاء event را به این صورت ایجاد کنیم:
14+
1615
```js
1716
let event = new Event(type[, options]);
1817
```
18+
1919
پارامتر ها:
2020

2121
- *type*: event type, یک رشته مانند `"click"` .
2222
- *options*: شی ای با دو ویژگی اختیاری.
23-
- *Bubbles*:اگر true بود یعنی bubbled می شود.
24-
- *cancelable (true/false)*: اگر ویزگی مقدار true را داشت عمل پیش فرض آن لغو میشود،
25-
- به صورت پیش فرض: `{bubbles: false, cancelable: false}`.
26-
-
23+
- *Bubbles*:اگر true بود یعنی bubbled می شود.
24+
- *cancelable (true/false)*: اگر ویزگی مقدار true را داشت عمل پیش فرض آن لغو میشود،
25+
26+
به صورت پیش فرض: `{bubbles: false, cancelable: false}`.
27+
2728
## dispatchEvent
2829

2930
پس از ایجاد یک event، باید آن را روی یک element با استفاده از فراخوانی `elem.dispatchEvent(event)` اجرا کنیم.
@@ -47,13 +48,11 @@ let event = new Event(type[, options]);
4748
4849
ویژگی 'event.isTrusted' برای رویدادهایی که از اقدامات کاربر واقعی ناشی می شوند 'true' و برای رویدادهای تولید شده توسط اسکریپت 'false' است.
4950
```
50-
5151
## مثالی از Bubbling
5252

53-
5453
می‌توانیم یک bubbling event با نام `"hello"` ایجاد کنیم و آن را در `document` بگیریم.
5554

56-
تنها چیزی که نیاز داریم این است که `bubbles` را روی "true" تنظیم کنیم:
55+
تنها چیزی که نیاز داریم این است که `bubbles` را روی `true` تنظیم کنیم:
5756

5857
```html run no-beautify
5958
<h1 id="elem">Hello from the script!</h1>
@@ -127,9 +126,11 @@ let event = new Event("click", {
127126
alert(event.clientX); // undefined, the unknown property is ignored!
128127
*/!*
129128
```
129+
130130
ااز نظر فنی، می‌توانیم با اختصاص مستقیم `event.clientX=100` پس از ایجاد، آن را حل کنیم. بنابراین این موضوع راحت و پیروی از قوانین است. event های ایجاد شده توسط مرورگر همیشه از نوع مناسبی هستند.
131131

132-
للیست کاملی از propertyها برای eventهای مختلف UI در مشخصات زبان وجود دارد، برای مثال، [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent).
132+
لیست کاملی از propertyها برای eventهای مختلف UI در مشخصات زبان وجود دارد، برای مثال، [MouseEvent](https://www.w3.org/TR/uievents/#mouseevent).
133+
133134
## event شخصی‌سازی‌شد
134135

135136
برای انواع events های کاملاً جدید خودمان مانند `"hello"` باید از `new CustomEvent` استفاده کنیم. از نظر فنی [CustomEvent](https://dom.spec.whatwg.org/#customevent) با `Event` یکسان است،البته با یک استثنا.
@@ -154,6 +155,7 @@ alert(event.clientX); // undefined, the unknown property is ignored!
154155
}));
155156
</script>
156157
```
158+
157159
ویژگی `detail` می تواند هر داده ای را داشته باشد. از نظر فنی می‌توانیم آن را تنظیم نکنیم، زیرا می‌توانیم هر ویژگی را پس از ایجاد یک شی `new Event` معمولی به آن اختصاص دهیم. اما `CustomEvent` فیلد `detail` ویژه ای را برای جلوگیری از conflicts با سایر property های event فراهم می کند.
158160

159161
علاوه بر این، کلاس event توضیح می‌دهد که «چه نوع رویدادی» است، و اگر event سفارشی باشد، باید از `CustomEvent` استفاده کنیم تا مشخص شود که چیست.
@@ -212,11 +214,10 @@ alert(event.clientX); // undefined, the unknown property is ignored!
212214

213215
استثنا قابل توجه زمانی است که یک رویداد از درون رویداد دیگری آغاز می شود، به عنوان مثال: با استفاده از `dispatchEvent` چنین رویدادهایی بلافاصله پردازش می‌شوند: کنترل‌کننده‌های رویداد جدید فراخوانی می‌شوند و سپس مدیریت رویداد فعلی از سر گرفته می‌شود.
214216

215-
به عنوان مثال، در کد زیر، رویداد `menu-open` در حین کلیک فعال می شود.
217+
به عنوان مثال، در کد زیر، رویداد `menu-open` در حین `onclick` فعال می شود.
216218

217-
بدون اینکه برای هندلر `onclick` صبر کند تا تمام شود، پردازش می‌ شود:
219+
بدون اینکه برای `onclick` هندلر صبر کند تا تمام شود، شروع به پردازش می شود:
218220

219-
بدون اینکه برای `onclick` هندلر صبر کند تا تمام شود، شروع به process شدن میشود:
220221

221222
```html run autorun
222223
<button id="menu">Menu (click me)</button>
@@ -264,12 +265,11 @@ alert(event.clientX); // undefined, the unknown property is ignored!
264265
document.addEventListener('menu-open', () => alert('nested'));
265266
</script>
266267
```
268+
267269
حالا `dispatchEvent` یه صورت asynchronously بعد از اینکه اجرای کد فعلی به اتمام رسید، run میشود، که شامل `menu.onclick`. پس event handler ها به صورت جدت و مستقل فعالیت میکنند.
268270

269271
خروجی به این ترتیب خواهد بود: 1 -> 2 -> nested.
270272

271-
272-
273273
## خلاصه
274274

275275
برای تولید یک event code، ابتدا باید یک event object ایجاد کنیم.
@@ -291,4 +291,4 @@ alert(event.clientX); // undefined, the unknown property is ignored!
291291
- به عنوان یک dirty hack برای اینکه کتابخانه های شخص ثالث به روش مورد نیاز کار کنند، اگر ابزارهای تعامل دیگری را ارائه ندهند.
292292
- برای تست خودکار، روی دکمه "click the button" در اسکریپت و ببینید که آیا رابط به درستی واکنش نشان می دهد.
293293

294-
همک چنین custom events با نام خود ما اغلب برای مقاصد معماری ایجاد می شوند تا نشان دهند که چه اتفاقی در منوها، اسلایدر ها و غیره می افتد.
294+
همچنین eventهای سفارشی با نام خود ما اغلب برای مقاصد معماری ایجاد می شوند تا نشان دهند که چه اتفاقی در منوها، اسلایدرها و غیره می افتد.

0 commit comments

Comments
 (0)