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/99-ui-misc/01-mutation-observer/article.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,7 @@ observer.observe(node, config);
49
49
Наприклад, ось елемент `<div>` із атрибутом `contentEditable`. Цей атрибут дає нам змогу переміщувати фокус на нього і редагувати.
50
50
51
51
```html run
52
-
<divcontentEditableid="elem">Натисни і <b>редагуй</b>, Будь ласка</div>
52
+
<divcontentEditableid="elem">Натисни і <b>редагуй</b>, будь ласка</div>
53
53
54
54
<script>
55
55
let observer =newMutationObserver(mutationRecords=> {
@@ -76,7 +76,7 @@ mutationRecords = [{
76
76
}];
77
77
```
78
78
79
-
Якщо ми виконаємо складніші операції редагування, наприклад видалимо весь `<b>редагуй</b>`, подія мутації можливо міститиме декілька записів змін:
79
+
Якщо ми виконаємо складніші операції редагування, наприклад видалимо `<b>редагуй</b>`, подія мутації можливо міститиме декілька записів змін:
80
80
81
81
```js
82
82
mutationRecords = [{
@@ -115,7 +115,7 @@ mutationRecords = [{
115
115
116
116
Також трапляються ситуації, коли `MutationObserver` є корисним з точки зору архітектури.
117
117
118
-
Припустімо, ми робимо вебсайт про програмування. Природно, статті та інші матеріали можуть містити фрагменти програмного коду.
118
+
Припустимо, ми робимо вебсайт про програмування. Природньо, статті та інші матеріали можуть містити фрагменти програмного коду.
119
119
120
120
Такий фрагмент всередині HTML-розмітки виглядає так:
121
121
@@ -128,9 +128,9 @@ mutationRecords = [{
128
128
...
129
129
```
130
130
131
-
Для кращої прочитності і, в той же час для естетичності, ми будемо використовувати JavaScript-бібліотеку для підсвітки синтаксису на нашому вебсайті, на кшталт [Prism.js](https://prismjs.com/). Для отримання синтаксичної підсвітки за допомогою Prism для наведеного вище фрагмента, викликається `Prism.highlightElem(pre)`, який вивчає вміст таких елементів `pre`, та додає в них особливі теги і стилі для кольорової підсвітки синтаксису, подібно до того, що ви можете побачитип в прикладах тут, на цій сторінці.
131
+
Для кращої прочитності і, в той же час для естетичності, ми будемо використовувати JavaScript-бібліотеку для підсвітки синтаксису на нашому вебсайті, на кшталт [Prism.js](https://prismjs.com/). Для отримання синтаксичної підсвітки за допомогою Prism для наведеного вище фрагмента, викликається `Prism.highlightElem(pre)`, який перевіряє вміст таких елементів `pre`, та додає в них особливі теги і стилі для кольорової підсвітки синтаксису, подібно до того, що ви можете побачити в прикладах тут, на цій сторінці.
132
132
133
-
Коли саме нам слід запускати такий метод для виконання підсвітки? Що ж, ми можемо це робити на подію `DOMContentLoaded`, або поставити скрипт внизу сторінки. Як тільки наша DOM готова, ми можемо виконати пошук елементів `pre[class*="language"]` та викликати на них `Prism.highlightElem`:
133
+
Коли саме нам слід запускати такий метод для додавання підсвітки? Що ж, ми можемо це робити на подію `DOMContentLoaded`, або поставити скрипт внизу сторінки. Як тільки наша DOM готова, ми можемо виконати пошук елементів `pre[class*="language"]` та викликати на них `Prism.highlightElem`:
134
134
135
135
```js
136
136
// підсвітити всі фрагменти коду на сторінці
@@ -146,7 +146,7 @@ let article = /* отримаємо новий вміст із сервера */
146
146
articleElem.innerHTML= article;
147
147
```
148
148
149
-
HTML-вміст нової статті `article` може містити фрагменти коду. Нам потрібно викликати на них `Prism.highlightElem`, інакше вони підсвітки на них не буде.
149
+
HTML-вміст нової статті `article` може містити фрагменти коду. Нам потрібно викликати на них `Prism.highlightElem`, інакше підсвітки на них не буде.
150
150
151
151
**Коли і де нам слід викликати `Prism.highlightElem` для динамічно завантаженої статті ?**
...Але, уявімо, що у нас є багато місць в коді, де ми завантажуємо наш вміст: статті, опитники, форумні дописи тощо. Чи повинні ми всюди вставити виклик підсвітки, аби виконати підсвітку синтаксису коду всередині вмісту після завантаження? Це не надто зручно.
165
+
...Але, уявімо, що у нас є багато місць в коді, де ми завантажуємо наш вміст: статті, опитники, форумні дописи тощо. Чи повинні ми всюди вставляти виклик підсвітки, аби виконати підсвітку синтаксису коду всередині вмісту після завантаження? Це не надто зручно.
166
166
167
167
І що, якщо вміст було завантажено стороннім модулем? Наприклад, якщо ми маємо форум, написаний кимось іншим, який динамічно завантажує вміст, і нам би хотілося додати до нього підсвітку синтаксису. Ніхто не любить правити сторонні скрипти.
168
168
@@ -221,7 +221,7 @@ let demoElem = document.getElementById('highlight-demo');
221
221
// динамічно вставляє вміст із фрагментами коду
222
222
demoElem.innerHTML=`Фрагмент коду -- нижче:
223
223
<preclass="language-javascript"><code> let hello = "world!"; </code></pre>
Коли ми припиняємо спостереження, може трапитися ситуація, що деякі зміни ще не були оброблені спостерігачем. В таких випадках, ми вживаємо
240
240
241
-
-`observer.takeRecords()` -- отримує перелік необроблених записів мутацій - тих, що трапилися, проте функція зворотного виклику їх ще не опрацювала.
241
+
-`observer.takeRecords()` -- отримує перелік необроблених записів мутацій -- тих, що трапилися, проте функція зворотного виклику їх ще не опрацювала.
242
242
243
243
Ці методи можна застосовувати разом, як це показано далі:
244
244
@@ -259,7 +259,7 @@ observer.disconnect();
259
259
```
260
260
261
261
```smart header="Взаємодія зі збиранням сміття"
262
-
Всередині спостерігачів використовуються слабкі посилання на вузли. Це означає, що якщо вузол видаляється із DOM, і стає недоступним - збирач сміття зможе його прибрати.
262
+
Всередині спостерігачів використовуються слабкі посилання на вузли. Це означає, що якщо вузол видаляється із DOM, і стає недоступним -- збирач сміття зможе його прибрати.
263
263
264
264
Сам факт спостереження за вузлом DOM не перешкоджає процесу збирання сміття.
0 commit comments