Skip to content

Commit ccf4c7c

Browse files
committed
последние исправления от iliakan
1 parent cf77d06 commit ccf4c7c

File tree

5 files changed

+15
-15
lines changed

5 files changed

+15
-15
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
Алгоритм:
3-
1. Создайте `img` для каждого ресурса.
4-
2. Добавьте обработчики `onload/onerror` для каждого изображения.
5-
3. Увеличивайте счетчик со срабатываниями `load` и `error`.
3+
1. Создадим `img` для каждого ресурса.
4+
2. Добавим обработчики `onload/onerror` для каждого изображения.
5+
3. Увеличиваем счетчик при срабатывании `onload` или `onerror`.
66
4. Когда значение счетчика равно количеству ресурсов -- тогда вызываем `callback()`.

2-ui/5-loading/03-onload-onerror/1-load-img-callback/solution.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
}
3636

3737
// для каждого изображения
38-
// создадим другое изображение с аналогичным src и проверим, получаем ли мы его ширину мгновенно
38+
// создадим другое изображение с аналогичным src и проверим, есть ли у нас его ширина
3939
function testLoaded() {
4040
let widthSum = 0;
4141
for (let i = 0; i < sources.length; i++) {

2-ui/5-loading/03-onload-onerror/1-load-img-callback/source.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
}
2525

2626
// для каждого изображения
27-
// создадим другое изображение с аналогичным src и проверим, получаем ли мы его ширину мгновенно
27+
// создадим другое изображение с аналогичным src и проверим, есть ли у нас его ширина
2828
function testLoaded() {
2929
let widthSum = 0;
3030
for (let i = 0; i < sources.length; i++) {

2-ui/5-loading/03-onload-onerror/1-load-img-callback/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ importance: 4
44

55
# Загрузите изображения с колбэком
66

7-
Обычно изображения начинают загружаться в момент их создания. Когда мы добавляет `<img>` на страницу, пользователь не видит это изображение мгновенно. Браузер сначала должен его загрузить.
7+
Обычно изображения начинают загружаться в момент их создания. Когда мы добавляем `<img>` на страницу, пользователь не увидит его тут же. Браузер сначала должен его загрузить.
88

99
Чтобы показать изображение сразу, мы можем создать его "заранее":
1010

2-ui/5-loading/03-onload-onerror/article.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,28 +98,28 @@ img.onerror = function() {
9898

9999
Однако есть некоторые особенности:
100100

101-
- Большинство ресурсов начинают загружаться после их добавления в document. За исключением `<img>`. Изображения начинают загружаться, только когда у них имеется атрибут src `(*)`.
101+
- Большинство ресурсов начинают загружаться после их добавления в документ. За исключением тега `<img>`. Изображения начинают загружаться, когда получают `src (*)`.
102102
- Для `<iframe>` событие `load` срабатывает по окончании загрузки как в случае успеха, так и в случае ошибки.
103103

104-
Такое поведение у `<iframe>` сложилось по историческим причинам.
104+
Такое поведение сложилось по историческим причинам.
105105

106106
## Кросс-доменная политика
107107

108108
Есть правило: скрипты с одного сайта не могут получить доступ к содержимому другого сайта. Например, скрипт с `https://facebook.com` не может прочитать почту пользователя на `https://gmail.com`.
109109

110-
Или, если быть более точным, один источник (домен/порт/протокол) не может получить доступ к содержимому другого источника. Даже домен и поддомен, или просто другой порт, будут считаться разными источниками, не имеющими доступа друг к другу.
110+
Или, если быть более точным, один источник (домен/порт/протокол) не может получить доступ к содержимому c другого источника. Даже поддомен или просто другой порт будут считаться разными источниками, не имеющими доступа друг к другу.
111111

112112
Это правило также касается ресурсов с других доменов.
113113

114114
Если мы используем скрипт с другого домена, и в нем имеется ошибка, мы не сможем узнать детали этой ошибки.
115115

116-
Для примера давайте возьмем скрипт с одним вызовом функции (которой не существует):
116+
Для примера давайте возьмем мини-скрипт `error.js`, который состоит из одного-единственного вызова функции, которой не существует:
117117
```js
118118
// 📁 error.js
119119
noSuchFunction();
120120
```
121121

122-
Теперь загрузим этот скрипт с нашего домена:
122+
Теперь загрузим этот скрипт с того же сайта, на котором он лежит:
123123

124124
```html run height=0
125125
<script>
@@ -155,15 +155,15 @@ Script error.
155155
, 0:0
156156
```
157157

158-
Детали отчёта могут варьироваться в зависимости от браузера, но идея общая: любая информация о внутренностях скрипта спрятана. Именно потому, что скрипт загружен с другого домена.
158+
Детали отчёта могут варьироваться в зависимости от браузера, но основная идея: любая информация о внутренностях скрипта, включая стек ошибки, спрятана. Именно потому, что скрипт загружен с другого домена.
159159

160-
Зачем нам могут быть нужны детали?
160+
Зачем нам могут быть нужны детали ошибки?
161161

162-
Существует много сервисов (и мы можем сделать наш собственный), которые обрабатывают `window.onerror`, сохраняют отчёт на сервере и предоставляют доступ к этому отчёту для анализа. Это здорово, потому что мы можем увидеть реальные ошибки, которые случились у наших пользователей. Но мы не можем увидеть ошибки сторонних скриптов "напрямую".
162+
Существует много сервисов (и мы можем сделать наш собственный), которые обрабатывают глобальные ошибки при помощи `window.onerror`, сохраняют отчёт о них и предоставляют доступ к этому отчёту для анализа. Это здорово, потому что мы можем увидеть реальные ошибки, которые случились у наших пользователей. Но если скрипт - с другого домена, то информации об ошибках в нём почти нет, как мы только что видели.
163163

164164
Похожая кросс-доменная политика (CORS) внедрена и в отношении других ресурсов.
165165

166-
**Чтобы разрешить кросс-доменный доступ, нам нужно воспользоваться атрибутом `crossorigin`, и, кроме того, удалённый сервер должен предоставить специальные заголовки.**
166+
**Чтобы разрешить кросс-доменный доступ, нам нужно поставить тегу `<script>` атрибут `crossorigin`, и, кроме того, удалённый сервер должен поставить специальные заголовки.**
167167

168168
Существует три уровня кросс-доменного доступа:
169169

0 commit comments

Comments
 (0)