Skip to content

Commit 3365e42

Browse files
make required edits to DOM-tree translation
1 parent 347c871 commit 3365e42

1 file changed

Lines changed: 20 additions & 20 deletions

File tree

2-ui/1-document/02-dom-nodes/article.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ libs:
88

99
تُعد العلامات (الوسوم) عصب مستند HTML.
1010

11-
وفقًا لنموذج كائن المستند (DOM)، فإن كل علامة (وسم) من علامات HTML يُعد كائن. وكل العلامات المُدرجة داخل هذه العلامة تُعد أبناءً لها. كما يُعد النص الموجود داخل هذه العلامة كائنًا أيضا.
11+
وفقًا لنموذج كائن المستند (DOM)، فإن كل علامة (وسم) من علامات HTML يُعد كائنًا. وكل العلامات المُدرجة داخل هذه العلامة تُعد أبناءً لها. كما يُعد النص الموجود داخل هذه العلامة كائنًا أيضا.
1212

1313
يُمكن الوصول إلى جميع تلك الكائنات باستخدام الجافاسكريبت؛ كما يُمكن استخدامهم لتعديل الصفحة.
1414

1515
على سبيل المثال، فإن `document.body` هو الكائن المُمثل للعلامة `<body>`.
1616

17-
سيؤدي تشغيل الكود التالي لجعل خلفية العلامة `<body>` أحمر اللون لمدة ثلاث ثوانٍ:
17+
سيؤدي تشغيل الشفرة التالية لجعل خلفية العلامة `<body>` أحمر اللون لمدة ثلاث ثوانٍ:
1818

1919
```js run
2020
document.body.style.background = 'red'; // لجعل الخلفية حمراء اللون
@@ -57,14 +57,14 @@ drawHtmlTree(node1, 'div.domtree', 690, 320);
5757
</script>
5858

5959
```online
60-
في الصورة أعلاه، يؤدي الضغط على أي عقدة عنصر إلى تمديد او طي أبنائها من العلامات.
60+
في الصورة أعلاه، يؤدي الضغط على أي عقدة عنصر إلى تمديد أو طي أبنائها من العلامات.
6161
```
6262

6363
كل عقدة في هذه الشجرة تُمثل كائنًا.
6464

65-
العلامات ما هي إلا *عقد العنصر* (أو تُعرف بالعناصر اختصارا)، وهي المُكونة لبنية الشجرة. `<html>` هو الجذر، ويُمثل كلا من الـ `<head>` والـ `<body>` ابناؤه، إلخ.
65+
العلامات ما هي إلا *عقد العنصر* (أو تُعرف بالعناصر اختصارا)، وهي المُكونة لبنية الشجرة. `<html>` هو الجذر، ويُمثل كلا من الـ `<head>` والـ `<body>` أبناؤه، إلخ.
6666

67-
يُشكل النص الموجود داخل العناصر *عقد النصوص*، والمسمى `#text`. تشتمل عقدة النص على سلسلة واحدة فقط. قد لا تحتوي عقدة النص على أية ابناء، وهي دائما تُمثل ورقة في هذه الشجرة.
67+
يُشكل النص الموجود داخل العناصر *عقد النصوص*، والمسمى `#text`. تشتمل عقدة النص على سلسلة واحدة فقط. قد لا تحتوي عقدة النص على أية أبناء، وهي دائما تُمثل ورقة في هذه الشجرة.
6868

6969
على سبيل المثال، العلامة `<title>` تحتوي على النص `"عن الظباء"`.
7070

@@ -79,7 +79,7 @@ drawHtmlTree(node1, 'div.domtree', 690, 320);
7979
1. يتم تجاهل المسافات والأسطر الجديدة التي تأتي قبل الـ `<head>` وذلك لأسباب تاريخية.
8080
2. إذا وُضع شيء بعد الـ `</body>`، فإنه سيُنقل تلقائيا إلى داخل الـ `body` وذلك في نهايته؛ حيث تتطلب مواصفات HTML أن يكون كل المحتوى داخل الـ `<body>`. ولذلك، فإنه من غير الممكن وجود أية مسافات بعد الـ `</body>`.
8181

82-
كل شيء يكون واضحا في بقية الحالات، فإذا كانت هناك مسافات في المستند (تماما مثل أي حرف)، فإنها تُسبح عقد نص في نموذج كائن المستند، وإذا اُزيلت فإن أيا منها لن يكون موجودا.
82+
كل شيء يكون واضحا في بقية الحالات، فإذا كانت هناك مسافات في المستند (تماما مثل أي حرف)، فإنها تُصبح عقد نص في نموذج كائن المستند، وإذا اُزيلت فإن أيا منها لن يكون موجودا.
8383

8484
فيما يلي لا توجد عقد نصية تحتوي على مسافات فقط:
8585

@@ -96,19 +96,19 @@ let node2 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1,
9696
drawHtmlTree(node2, 'div.domtree', 690, 210);
9797
</script>
9898

99-
```smart header="عادة ما تُخفى المسافات في بداية/نهاية السلاسل، وفي العقد النصية التي تحتوي على مسافات فقط من الادوات"
99+
```smart header="عادة ما تُخفى المسافات في بداية/نهاية السلاسل، وفي العقد النصية التي تحتوي على مسافات فقط من الأدوات"
100100
أدوات المتصفح (التي سيتم تغطيتها قريبا) والتي تعمل مع نموذج كائن المستند لا تعرض عادة المسافات في بداية/نهاية النص، والعقد النصية الفارغة (فواصل الأسطر) بين العلامات.
101101
102102
وبهذه الطريقة، توفر أدوات المطور مساحة الشاشة.
103103
104-
في صور نموذج كائن المستند الأخرى، سنحذفها أحيانا عندما تكون غير متصلة بالموضوع. عادة، فإن هذه المسافات لا تؤثر على كيفية عرض المستند.
104+
في صور نموذج كائن المستند الأخرى، سنحذفها أحيانا عندما تكون غير متصلة بالموضوع. عادة، لا تؤثر هذه المسافات على كيفية عرض المستند.
105105
```
106106

107107
## التصحيح التلقائي
108108

109109
عندما يواجه المتصفح ترميز HTML مكتوب بشكل غير صحيح، فإنه يقوم بتصحيحه تلقائيا عند إنشاء نموذج كائن المستند DOM.
110110

111-
على سبيل المثال,تتواجد العلامة `<html>` في الأعلى؛ وذلك حتى في حال عدم تواجدها في المستند، فإنها تظل متواجدة في نموذج كائن المستند؛ وذلك لأن المتصفح يقوم بإنشائها. وينطبق الأمر ذاته على علامة `<body>`.
111+
على سبيل المثال، توجد العلامة `<html>` في الأعلى؛ وذلك حتى في حال عدم تواجدها في المستند، فإنها تظل متواجدة في نموذج كائن المستند؛ وذلك لأن المتصفح يقوم بإنشائها. وينطبق الأمر ذاته على علامة `<body>`.
112112

113113
مثال: إذا كان ملف الـ HTML يحتوى فقط على كلمة `"مرحبا"`، فإن المتصفح سيقوم بتضمينه داخل علامتي `<html>` و `<body>`، كما سيقوم بإضافة علامة `<head>`؛ وعليه يكون نموذج كائن المستند كما يلي:
114114

@@ -142,8 +142,8 @@ let node4 = {"name":"HTML","nodeType":1,"children":[{"name":"HEAD","nodeType":1,
142142
drawHtmlTree(node4, 'div.domtree', 690, 360);
143143
</script>
144144

145-
````warn header="الجداول دائما ما تحتوي على `<tbody>`"
146-
تُشكل الجداول "حالة خاصة" مُثيرة للإهتمام. وفقا لمواصفات نموذج كائن المستند، ينبغي أن يكون لدى الجداول علامة `<tbody>`، ولكنها قد تكون محذوفة من HTML (الرسمي). ويقوم المتصفح لاحقا بإنشاء `<tbody>` تلقائيا في نموذج كائن المستند.
145+
````warn header="الجدأول دائما ما تحتوي على `<tbody>`"
146+
تُشكل الجدأول "حالة خاصة" مُثيرة للإهتمام. وفقا لمواصفات نموذج كائن المستند، ينبغي أن يكون لدى الجدأول علامة `<tbody>`، ولكنها قد تكون محذوفة من HTML (الرسمي). ويقوم المتصفح لاحقا بإنشاء `<tbody>` تلقائيا في نموذج كائن المستند.
147147

148148
ملف HTML:
149149

@@ -160,14 +160,14 @@ let node5 = {"name":"TABLE","nodeType":1,"children":[{"name":"TBODY","nodeType":
160160
drawHtmlTree(node5, 'div.domtree', 600, 200);
161161
</script>
162162

163-
أترى؟ لقد وُجدت علامة `<tbody>` من العدم. يجب أن تضع هذا في الاعتبار أثناء العمل مع الجداول لتجنب المفاجأت.
163+
أترى؟ لقد وُجدت علامة `<tbody>` من العدم. يجب أن تضع هذا في الاعتبار أثناء العمل مع الجدأول لتجنب المفاجآت.
164164
````
165165
166166
## أنواع العقد الأخرى
167167
168168
هناك بعض أنواع العقد الأخرى إلى جانب العناصر وعقد النص.
169169
170-
على سبيل المثال ، التعليقات:
170+
على سبيل المثال، التعليقات:
171171
172172
```html
173173
<!DOCTYPE HTML>
@@ -199,7 +199,7 @@ drawHtmlTree(node6, 'div.domtree', 690, 500);
199199
200200
**كل شيء في HTML، حتى التعليقات، تصبح جزءا من نموذج كائن المستند.**
201201
202-
حتى تعليمة `<!DOCTYPE...>` في بداية HTML هي أيضا عقدة من نموذج كائن المستند. فهي تتواجد في شجرة نموذج كائن المستند قبل `<html>` مباشرة. لن نتعامل مع تلك العقدة، حتى أنها لا تُرسم على الرسوم البيانية لهذا السبب، ولكنها موجودة.
202+
حتى تعليمة `<!DOCTYPE...>` في بداية HTML هي أيضا عقدة من نموذج كائن المستند. فهي توجد في شجرة نموذج كائن المستند قبل `<html>` مباشرة. لن نتعامل مع تلك العقدة، حتى أنها لا تُرسم على الرسوم البيانية لهذا السبب، ولكنها موجودة.
203203
204204
كائن `المستند`، والذي يُمثل المستند بأكمله، يُكون عقدة من نموذج كائن المستند أيضا.
205205
@@ -226,7 +226,7 @@ drawHtmlTree(node6, 'div.domtree', 690, 500);
226226
227227
يُرجى ملاحظة أن بنية نموذج كائن المستند في أدوات المطورين مُبسطة. حيث يتم عرض العُقد النصية كنص فقط؛ ولا توجد أي عُقد نصية "فارغة" (مسافة فقط) على الإطلاق. وهذا جيد، لأننا مهتمون في معظم الأحيان بعُقد العناصر.
228228
229-
يسمح لنا النقر على الزر <span class="devtools" style="background-position:-328px -124px"></span> في الزاوية اليُسرى العُليا باختيار عقدة من صفحة الويب باستخدام الفأرة (أو أجهزة التأشير الأخرى) و "فحصها" (الانتقال إليها في علامة تبويب العناصر). وهذا يكون رائعا عندما يكون لدينا صفحة HTML ضخمة (ونموذج كائن مستند ضخم بالتبعية) ونود أن نرى مكان عنصر معين فيه.
229+
يسمح لنا النقر على الزر <span class="devtools" style="background-position:-328px -124px"></span> في الزأوية اليُسرى العُليا باختيار عقدة من صفحة الويب باستخدام الفأرة (أو أجهزة التأشير الأخرى) و "فحصها" (الانتقال إليها في علامة تبويب العناصر). وهذا يكون رائعا عندما يكون لدينا صفحة HTML ضخمة (ونموذج كائن مستند ضخم بالتبعية) ونود أن نرى مكان عنصر معين فيه.
230230
231231
هناك طريقة أخرى للقيام بذلك وهي النقر بزر الفأرة الأيمن على صفحة الويب واختيار "فحص Inspect" في قائمة السياق.
232232
@@ -242,12 +242,12 @@ drawHtmlTree(node6, 'div.domtree', 690, 500);
242242
243243
## التفاعل مع الـ Console
244244
245-
أثناء العمل مع نموذج كائن المستند، قد نرغب أيضا في تطبيق الجافاسكربت عليه. مثل: ايجاد عقدة وتشغيل بعض التعليمات البرمجية لتعديلها، وذلك لرؤية النتيجة. إليك بعض النصائح للتنقل بين علامتي التبويب Elements و console.
245+
أثناء العمل مع نموذج كائن المستند، قد نرغب أيضا في تطبيق الجافاسكربت عليه. مثل: إيجاد عقدة وتشغيل بعض التعليمات البرمجية لتعديلها، وذلك لرؤية النتيجة. إليك بعض النصائح للتنقل بين علامتي التبويب Elements و console.
246246
247247
في البداية:
248248
249249
1. حدد أول عنصر `<li>` في تبويب Elements.
250-
2. اضغط `مفتاح:Esc`-- سيفتح الـ console اسفل علامة تبويب Elements مباشرة.
250+
2. اضغط `مفتاح:Esc`-- سيفتح الـ console أسفل علامة تبويب Elements مباشرة.
251251
252252
الآن أخر عنصر تم تحديده متاح كـ `$0`، والعنصر الذي كان مُحددا قبله هو `$1` إلخ.
253253
@@ -257,9 +257,9 @@ drawHtmlTree(node6, 'div.domtree', 690, 500);
257257
258258
هذه هي كيفية الحصول على عقدة من علامة تبويب Elements في console.
259259
260-
ووعلى عكس المثال السابق، فإذا كان هناك متغير يُشير إلى عقدة من نموذج كائن المستند، فيُمكننا استخدام الأمر `فحص(العقدة) inspect(node)` في الـ Console لرؤيته في جزء العناصر.
260+
وعلى عكس المثال السابق، فإذا كان هناك متغير يُشير إلى عقدة من نموذج كائن المستند، فيُمكننا استخدام الأمر `فحص(العقدة) inspect(node)` في الـ Console لرؤيته في جزء العناصر.
261261
262-
أو يُمكننا فقط اخراج عقدة نموذج كائن المستند في الـ console واستكشافها "في مكانها"، مثل: `document.body` أدناه:
262+
أو يُمكننا فقط إخراج عقدة نموذج كائن المستند في الـ console واستكشافها "في مكانها"، مثل: `document.body` أدناه:
263263
264264
![](domconsole1.svg)
265265
@@ -279,4 +279,4 @@ drawHtmlTree(node6, 'div.domtree', 690, 500);
279279
280280
قمنا هنا بتغطية الأساسيات والإجراءات الأكثر استخدامًا والأكثر أهمية للبدء بها. هناك وثائق شاملة حول Chrome Developer Tools على <https://developers.google.com/web/tools/chrome-devtools>. أفضل طريقة لتعلم الأدوات هي بالنقر هنا وهناك، وقراءة القوائم: حيث مُعظم الخيارات واضحة. لاحقًا، عندما تعرفها مُجملة، اقرأ وثائقها وتعلم الباقي.
281281
282-
تحتوي عقد نموذج شجرة المستند على خصائص وأساليب تتيح لنا التنقل بينها وتعديلها والتنقل في الصفحة والمزيد. سنتناولها في الفصول القادمة.
282+
تحتوي عقد نموذج شجرة المستند على خصائص وأساليب تتيح لنا التنقل بينها وتعديلها والتنقل في الصفحة والمزيد. سنتنأولها في الفصول القادمة.

0 commit comments

Comments
 (0)