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
Однако, для некоторых задач попапы ещё используются, например для OAuth-авторизации (вход через Google/Facebook/...), так как:
17
17
18
-
1. Попап - это отдельное окно со своим JavaScript-окружением. Так что открытие попапа со стороннего, не доверенного сайта вполне безопасно
18
+
1. Попап - это отдельное окно со своим JavaScript-окружением. Так что открытие попапа со стороннего, не доверенного сайта относительно безопасно (учитывая, что сохраняются риски фишинга и другие угрозы).
19
19
2. Открыть попап очень просто.
20
20
3. Попап может производить навигацию (менять URL) и отсылать сообщения в основное окно.
21
21
@@ -46,7 +46,7 @@ url
46
46
: URL для загрузки в новом окне.
47
47
48
48
name
49
-
: Имя нового окна. У каждого окна есть свойство `window.name`, в котором можно задавать, какое окно использовать для попапа. Таким образом, если уже существует окно с заданным именем – указанный в параметрах URL откроется в нем, в противном случае откроется новое окно.
49
+
: Имя нового окна. У каждого окна есть свойство `window.name`, в котором можно задавать, какое окно использовать для попапа. Таким образом, если уже существует окно с заданным именем – указанный в параметрах URL откроется в нём, иначе откроется новое окно.
50
50
51
51
params
52
52
: Строка параметров для нового окна. Содержит настройки, разделённые запятыми. Важно помнить, что в данной строке не должно быть пробелов. Например `width=200,height=100`.
@@ -104,28 +104,28 @@ open('/', 'test', params);
104
104
Например, здесь мы генерируем содержимое попапа из JavaScript:
Обратите внимание: сразу после `window.open` новое окно ещё не загружено. Это демонстрируется в строке `(*)`. Так что нужно ждать `onload`, чтобы его изменить. Или же поставить обработчик `DOMContentLoaded` на `newWin.document`.
128
+
Обратите внимание: сразу после `window.open` новое окно ещё не загружено. Это демонстрируется в строке `(*)`. Так что нужно ждать события `load`, чтобы его изменить. Или же поставить обработчик `DOMContentLoaded` на `myPopup.document`.
129
129
130
130
```warn header="Политика одного источника"
131
131
Окна имеют свободный доступ к содержимому друг друга только если они с одного источника (у них совпадают домен, протокол и порт (protocol://domain:port).
Технически метод `close()` доступен для любого окна, но `window.close()` будет игнорироваться большинством браузеров, если `window` не было создано с помощью `window.open()`. Так что он сработает только для попапов.
Методы для передвижения и изменения размеров окна:
175
+
Методы для перемещения и изменения размеров окна:
176
176
177
-
`win.moveBy(x,y)`
177
+
`myPopup.moveBy(x,y)`
178
178
: Переместить окно относительно текущей позиции на `x` пикселей вправо и `y` пикселей вниз. Допустимы отрицательные значения (для перемещения окна влево и вверх).
179
179
180
-
`win.moveTo(x,y)`
180
+
`myPopup.moveTo(x,y)`
181
181
: Переместить окно на координаты экрана `(x,y)`.
182
182
183
-
`win.resizeBy(width,height)`
183
+
`myPopup.resizeBy(width,height)`
184
184
: Изменить размер окна на указанные значения `width/height` относительно текущего размера. Допустимы отрицательные значения.
Но всё-таки иногда методы фокусировки бывают полезны. Например:
233
233
234
-
- Когда мы открываем попап, может быть хорошей идеей запустить для него `newWindow.focus()`. Для некоторых комбинаций браузера и операционной системы это устранит неоднозначность – заметит ли пользователь это новое окно.
234
+
- Когда мы открываем попап, может быть хорошей идеей запустить для него `myPopup.focus()`. Для некоторых комбинаций браузера и операционной системы это устранит неоднозначность – заметит ли пользователь это новое окно.
235
235
- Если нужно отследить, когда посетитель использует веб-приложение, можно отслеживать `window.onfocus/onblur`. Это позволит ставить на паузу и продолжать выполнение анимаций и других интерактивных действий на странице. При этом важно помнить, что `blur` означает, что окно больше не в фокусе, но пользователь может по-прежнему видеть его.
0 commit comments