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/1-document/3-dom-console/article.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -28,10 +28,10 @@
28
28
<dd>И еще некоторые реже используемые вкладки, которые станут понятны по мере изучения DOM.</dd>
29
29
</dl>
30
30
31
-
[warn header="DOM не полностью отображается в инструментах!"]
31
+
[warn header="DOM в Elements не совсем соответствует реальному"]
32
32
Отображение DOM во вкладке Elements не совсем соответствует реальному. В частности, там не отображаются пробельные узлы. Это сделано для удобства просмотра. На мы-то знаем, что они есть.
33
33
34
-
В Elements можно увидеть CSS-псевдоэлементы, такие как `::before`, `::after`. Это также сделано для удобства, в DOM их не существует.
34
+
С другой стороны, в Elements можно увидеть CSS-псевдоэлементы, такие как `::before`, `::after`. Это также сделано для удобства, в DOM их не существует.
В корне DOM находится `document`, и он-то как раз не элемент. То есть, если идти по цепочке `parentElement` вверх, то мы, остановимся мы не на `document` как в случае с `parentNode`, а на `document.documentElement`.
236
+
Оно всегда равно `parentElement`, кроме одного исключения:
Copy file name to clipboardExpand all lines: 2-ui/2-events-and-interfaces/8-dispatch-events/article.md
+12-8Lines changed: 12 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,13 +50,15 @@ var event = new Event(тип события[, флаги]);
50
50
51
51
На сгенерированном событии, как и на встроенном браузерном, обработчик может вызвать метод `event.preventDefault()`. Тогда `dispatchEvent` возвратит `false`.
52
52
53
-
Остановимся здесь подробнее. Обычно такой вызов предотвращает действие браузера. В случае, если событие придумано нами-- никакого действия браузера, конечно, нет, но код, который генерирует событие, может быть заинтересован узнать, что его "отменили" и не продолжать свои действия.
53
+
Остановимся здесь подробнее. Обычно `preventDefault()` вызов предотвращает действие браузера. В случае, если событие придумано нами, имеет нестандартное имя -- никакого действия браузера, конечно, нет.
54
54
55
-
Иначе говоря, `event.preventDefault()` является возможностью для обработчика сообщить в сгенерировавший событие код, что некие действия продолжать не надо.
55
+
Но код, который генерирует событие, может предусматривать какие-то ещё действия после `dispatchEvent`.
56
56
57
-
В примере ниже функция `hide()`генерирует событие `hide` на элементе `#rabbit`, уведомляя всех интересующихся, что кролик собирается спрятаться.
57
+
Вызов `event.preventDefault()`является возможностью для обработчика событие сообщить в сгенерировавший событие код, что эти действия продолжать не надо.
58
58
59
-
И, если никакой обработчик не отменит действие по умолчанию, то кролик действительно исчезнет:
59
+
В примере ниже есть функция `hide()`, которая при вызове генерирует событие `hide` на элементе `#rabbit`, уведомляя всех интересующихся, что кролик собирается спрятаться.
60
+
61
+
Любой обработчик может узнать об этом, подписавшись на событие через `rabbit.addEventListener('hide',...)` и, при желании, отменить действие по умолчанию через `event.preventDefault()`. Тогда кролик не исчезнет:
60
62
61
63
```html
62
64
<!--+ run -->
@@ -70,15 +72,13 @@ var event = new Event(тип события[, флаги]);
70
72
71
73
72
74
<script>
73
-
// прячемся через 2 секунды
74
-
setTimeout(hide, 2000);
75
-
75
+
76
76
functionhide() {
77
77
varevent=newEvent("hide", {
78
78
cancelable:true
79
79
});
80
80
if (!rabbit.dispatchEvent(event)) {
81
-
alert( 'действие отменено' );
81
+
alert( 'действие отменено обработчиком' );
82
82
} else {
83
83
rabbit.hidden=true;
84
84
}
@@ -89,6 +89,10 @@ var event = new Event(тип события[, флаги]);
0 commit comments