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
در اینجا یک پایه تست انعطافپذیرتر وجود دارد که در آن میتوانید اعداد شروع/پایان محدوده را تنظیم کنید و انواع دیگر را بررسی کنیدد:
143
-
144
133
```html run autorun
145
134
<pid="p">Example: <i>italic</i> and <b>bold</b></p>
146
135
@@ -163,7 +152,6 @@ From <input id="start" type="number" value=1> – To <input id="end" type="numbe
163
152
```
164
153
165
154
به عنوان مثال، انتخاب در همان `<p>` از آفست `1` تا `4`، محدوده `<i>italic</i> and <b>bold</b>` را به ما میدهد:
166
-
167
155

168
156
169
157
@@ -174,17 +162,13 @@ From <input id="start" type="number" value=1> – To <input id="end" type="numbe
174
162
### Selecting a bigger fragment
175
163
176
164
بیایید در مثال خود یک انتخاب بزرگتر انجام دهیم، مانند این:
177
-
178
165

179
166
180
-
181
-
182
167
ما قبلاً می دانیم که چگونه این کار را انجام دهیم. فقط باید شروع و پایان را به عنوان یک افست نسبی در گره های متنی تنظیم کنیم.
183
168
184
169
ما باید یک محدوده ایجاد کنیم، که:
185
170
- از موقعیت 2 در `<p>` فرزند اول شروع میشود (با گرفتن همه حرفهای اول «مثال<b>ample:</b>» به جز دو حرف اول)
186
171
- در `<b>`فرزند اول به موقعیت 3 ختم می شود (با گرفتن سه حرف اول "<b>bol</b>d"، اما نه بیشتر):
187
-
188
172
```html run
189
173
<pid="p">Example: <i>italic</i> and <b>bold</b></p>
190
174
@@ -206,7 +190,6 @@ From <input id="start" type="number" value=1> – To <input id="end" type="numbe
206
190
اگر میخواهیم گرهها را بهعنوان یک کل بگیریم، میتوانیم عناصر را در `setStart/setEnd` ارسال کنیم. در غیر این صورت می توانیم در سطح متن کار کنیم.
207
191
208
192
## Range properties
209
-
210
193
شی range که در مثال بالا ایجاد کردیم دارای ویژگی های زیر است:
211
194
212
195

@@ -416,6 +399,7 @@ From <input id="from" disabled> – To <input id="to" disabled>
416
399
417
400
1. میتوانیم از `document.getSelection().toString()` برای دریافت آن به عنوان متن استفاده کنیم.
418
401
2. در غیر این صورت، برای کپی کردن DOM کامل، به عنوان مثال. اگر نیاز به قالببندی داشته باشیم، میتوانیم محدودههای زیربنایی را با `getRangeAt(...)` دریافت کنیم. یک شی `Range` به نوبه خود دارای متد `cloneContents()` است که محتوای آن را شبیهسازی میکند و به عنوان شی `DocumentFragment` برمیگرداند، که میتوانیم آن را در جای دیگری درج کنیم.
402
+
3.
419
403
420
404
در اینجا نسخه ی نمایشی کپی کردن محتوای انتخاب شده به عنوان متن و به عنوان گره های DOM آمده است:
421
405
@@ -454,6 +438,7 @@ As text: <span id="astext"></span>
454
438
-`removeAllRanges()`-- حذف همه محدوده ها.
455
439
-`empty()`-- نام مستعار `removeAllRanges`.
456
440
441
+
457
442
همچنین روشهای آسانی برای دستکاری مستقیم محدوده انتخاب، بدون فراخوانی `Range` میانی وجود دارد:
458
443
459
444
-`collapse(node, offset)`-- محدوده انتخاب شده را با یک محدوده جدید جایگزین کنید که در "گره" داده شده شروع و پایان می یابد، در موقعیت "offset".
@@ -481,7 +466,6 @@ As text: <span id="astext"></span>
481
466
```
482
467
483
468
همین مورد با استفاده از محدوده ها:
484
-
485
469
```html run
486
470
<p id="p">Select me: <i>italic</i> and <b>bold</b></p>
487
471
@@ -587,6 +571,7 @@ Focus on me, the cursor will be at position 10.
587
571
588
572
### Example: modifying selection
589
573
574
+
590
575
برای تغییر محتوای انتخابی، میتوانیم از روش `input.setRangeText()` استفاده کنیم. البته، میتوانیم `selectionStart/End` را بخوانیم و با آگاهی از انتخاب، زیررشته مربوط به `value` را تغییر دهیم، اما `setRangeText` قدرتمندتر و اغلب راحتتر است.
591
576
592
577
این یک روش تا حدودی پیچیده است. در ساده ترین شکل تک آرگومان خود، جایگزین محدوده انتخابی کاربر می شود و انتخاب را حذف می کند.
@@ -630,7 +615,6 @@ button.onclick = () => {
630
615
631
616
### Example: insert at cursor
632
617
633
-
634
618
اگر چیزی انتخاب نشده باشد، یا از `start` و `end` مساوی در `setRangeText` استفاده کنیم، آنگاه متن جدید فقط درج میشود، چیزی حذف نمیشود.
635
619
636
620
همچنین میتوانیم چیزی را «در مکاننما» با استفاده از `setRangeText` وارد کنیم.
0 commit comments