Skip to content

Commit 2df1fba

Browse files
authored
feat: edit popup-windows article.md ru
1 parent 670ccab commit 2df1fba

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

3-frames-and-windows/01-popup-windows/article.md

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ window.open('https://javascript.info/')
1515

1616
Однако, для некоторых задач попапы ещё используются, например для OAuth-авторизации (вход через Google/Facebook/...), так как:
1717

18-
1. Попап - это отдельное окно со своим JavaScript-окружением. Так что открытие попапа со стороннего, не доверенного сайта вполне безопасно
18+
1. Попап - это отдельное окно со своим JavaScript-окружением. Так что открытие попапа со стороннего, не доверенного сайта относительно безопасно (учитывая, что сохраняются риски фишинга и другие угрозы).
1919
2. Открыть попап очень просто.
2020
3. Попап может производить навигацию (менять URL) и отсылать сообщения в основное окно.
2121

@@ -46,7 +46,7 @@ url
4646
: URL для загрузки в новом окне.
4747

4848
name
49-
: Имя нового окна. У каждого окна есть свойство `window.name`, в котором можно задавать, какое окно использовать для попапа. Таким образом, если уже существует окно с заданным именем – указанный в параметрах URL откроется в нем, в противном случае откроется новое окно.
49+
: Имя нового окна. У каждого окна есть свойство `window.name`, в котором можно задавать, какое окно использовать для попапа. Таким образом, если уже существует окно с заданным именем – указанный в параметрах URL откроется в нём, иначе откроется новое окно.
5050

5151
params
5252
: Строка параметров для нового окна. Содержит настройки, разделённые запятыми. Важно помнить, что в данной строке не должно быть пробелов. Например `width=200,height=100`.
@@ -104,28 +104,28 @@ open('/', 'test', params);
104104
Например, здесь мы генерируем содержимое попапа из JavaScript:
105105

106106
```js
107-
let newWin = window.open("about:blank", "hello", "width=200,height=200");
107+
let myPopup = window.open("about:blank", "hello", "width=200,height=200");
108108

109-
newWin.document.write("Hello, world!");
109+
myPopup.document.write("Hello, world!");
110110
```
111111

112112
А здесь содержимое окна модифицируется после загрузки:
113113

114114
```js run
115-
let newWindow = open('/', 'example', 'width=300,height=300')
116-
newWindow.focus();
115+
let myPopup = window.open('/', 'example', 'width=300,height=300')
116+
myPopup.focus();
117117

118-
alert(newWindow.location.href); // (*) about:blank, загрузка ещё не началась
118+
alert(myPopup.location.href); // (*) about:blank, загрузка ещё не началась
119119

120-
newWindow.onload = function() {
120+
myPopup.onload = function() {
121121
let html = `<div style="font-size:30px">Добро пожаловать!</div>`;
122122
*!*
123-
newWindow.document.body.insertAdjacentHTML('afterbegin', html);
123+
myPopup.document.body.insertAdjacentHTML('afterbegin', html);
124124
*/!*
125125
};
126126
```
127127

128-
Обратите внимание: сразу после `window.open` новое окно ещё не загружено. Это демонстрируется в строке `(*)`. Так что нужно ждать `onload`, чтобы его изменить. Или же поставить обработчик `DOMContentLoaded` на `newWin.document`.
128+
Обратите внимание: сразу после `window.open` новое окно ещё не загружено. Это демонстрируется в строке `(*)`. Так что нужно ждать события `load`, чтобы его изменить. Или же поставить обработчик `DOMContentLoaded` на `myPopup.document`.
129129

130130
```warn header="Политика одного источника"
131131
Окна имеют свободный доступ к содержимому друг друга только если они с одного источника (у них совпадают домен, протокол и порт (protocol://domain:port).
@@ -140,9 +140,9 @@ newWindow.onload = function() {
140140
Если вы запустите код ниже, то он заменит содержимое открывшего (текущего) окна на "Тест":
141141

142142
```js run
143-
let newWin = window.open("about:blank", "hello", "width=200,height=200");
143+
let myPopup = window.open("about:blank", "hello", "width=200,height=200");
144144

145-
newWin.document.write(
145+
myPopup.document.write(
146146
"<script>window.opener.document.body.innerHTML = 'Тест'<\/script>"
147147
);
148148
```
@@ -151,9 +151,9 @@ newWin.document.write(
151151

152152
## Закрытие попапа
153153

154-
Чтобы закрыть окно: `win.close()`
154+
Чтобы закрыть окно: `myPopup.close()`
155155

156-
Для проверки, закрыто ли окно: `win.closed`.
156+
Для проверки, закрыто ли окно: `myPopup.closed`.
157157

158158
Технически метод `close()` доступен для любого окна, но `window.close()` будет игнорироваться большинством браузеров, если `window` не было создано с помощью `window.open()`. Так что он сработает только для попапов.
159159

@@ -162,28 +162,28 @@ newWin.document.write(
162162
Этот код откроет и затем закроет окно:
163163

164164
```js run
165-
let newWindow = open('/', 'example', 'width=300,height=300');
165+
let myPopup = open('/', 'example', 'width=300,height=300');
166166

167-
newWindow.onload = function() {
168-
newWindow.close();
169-
alert(newWindow.closed); // true
167+
myPopup.onload = function() {
168+
myPopup.close();
169+
alert(myPopup.closed); // true
170170
};
171171
```
172172

173-
## Прокрутка и изменение размеров
173+
## Перемещение и изменение размеров попапа
174174

175-
Методы для передвижения и изменения размеров окна:
175+
Методы для перемещения и изменения размеров окна:
176176

177-
`win.moveBy(x,y)`
177+
`myPopup.moveBy(x,y)`
178178
: Переместить окно относительно текущей позиции на `x` пикселей вправо и `y` пикселей вниз. Допустимы отрицательные значения (для перемещения окна влево и вверх).
179179

180-
`win.moveTo(x,y)`
180+
`myPopup.moveTo(x,y)`
181181
: Переместить окно на координаты экрана `(x,y)`.
182182

183-
`win.resizeBy(width,height)`
183+
`myPopup.resizeBy(width,height)`
184184
: Изменить размер окна на указанные значения `width/height` относительно текущего размера. Допустимы отрицательные значения.
185185

186-
`win.resizeTo(width,height)`
186+
`myPopup.resizeTo(width,height)`
187187
: Изменить размер окна до указанных значений.
188188

189189
Также существует событие `window.onresize`.
@@ -198,18 +198,18 @@ newWindow.onload = function() {
198198
Методы перемещения и изменения размера окна не работают для свернутых и развёрнутых на весь экран окон.
199199
```
200200

201-
## Прокрутка окна
201+
## Прокрутка попапа
202202

203203
Мы уже говорили о прокрутке окна в главе <info:size-and-scroll-window>.
204204

205-
`win.scrollBy(x,y)`
205+
`myPopup.scrollBy(x,y)`
206206
: Прокрутить окно на `x` пикселей вправо и `y` пикселей вниз относительно текущей прокрутки. Допустимы отрицательные значения.
207207

208-
`win.scrollTo(x,y)`
208+
`myPopup.scrollTo(x,y)`
209209
: Прокрутить окно до заданных координат `(x,y)`.
210210

211211
`elem.scrollIntoView(top = true)`
212-
: Прокрутить окно так, чтобы `elem` для `elem.scrollIntoView(false)` появился вверху (по умолчанию) или внизу.
212+
: Прокрутить окно так, чтобы `elem` появился вверху (по умолчанию) или внизу при `elem.scrollIntoView(false)`.
213213

214214
Также существует событие `window.onscroll`.
215215

@@ -231,7 +231,7 @@ window.onblur = () => window.focus();
231231

232232
Но всё-таки иногда методы фокусировки бывают полезны. Например:
233233

234-
- Когда мы открываем попап, может быть хорошей идеей запустить для него `newWindow.focus()`. Для некоторых комбинаций браузера и операционной системы это устранит неоднозначность – заметит ли пользователь это новое окно.
234+
- Когда мы открываем попап, может быть хорошей идеей запустить для него `myPopup.focus()`. Для некоторых комбинаций браузера и операционной системы это устранит неоднозначность – заметит ли пользователь это новое окно.
235235
- Если нужно отследить, когда посетитель использует веб-приложение, можно отслеживать `window.onfocus/onblur`. Это позволит ставить на паузу и продолжать выполнение анимаций и других интерактивных действий на странице. При этом важно помнить, что `blur` означает, что окно больше не в фокусе, но пользователь может по-прежнему видеть его.
236236

237237
## Итого

0 commit comments

Comments
 (0)