- Свойство Form. PopUp (Access) Form.PopUp property (Access)
- Синтаксис Syntax
- Примечания Remarks
- Поддержка и обратная связь Support and feedback
- Создаем popup окно для сайта
- Как обойти блокировку
- Как всплывающие окна используются сегодня
- window.open
- params
- Пример простого popup-окна
- Доступ к popup-окну
- Доступ к окну opener
- Закрытие всплывающего окна
- Фокусировка popup-окна
- Заключение
- Popups and window methods
- Popup blocking
- window.open
- Example: a minimalistic window
- Accessing popup from window
- Accessing window from popup
- Comments
Свойство Form. PopUp (Access) Form.PopUp property (Access)
Указывает, будет ли форма открываться как всплывающее окно. Specifies whether a form opens as a pop-up window. Для чтения и записи, Boolean. Read/write Boolean.
Синтаксис Syntax
Expression. Всплывающее меню expression.PopUp
выражение: переменная, представляющая объект Form. expression A variable that represents a Form object.
Примечания Remarks
Свойство Popup использует указанные ниже параметры. The PopUp property uses the following settings.
Параметр Setting | Visual Basic Visual Basic | Описание Description |
---|---|---|
Да Yes | True True | Форма откроется в виде всплывающего окна. The form opens as a pop-up window. Он остается поверх всех остальных окон Microsoft Access. It remains on top of all other Microsoft Access windows. |
Нет No | False False | Умолчани Форма не является всплывающим окном. (Default) The form isn’t a pop-up window. |
Свойство Popup можно задать только в режиме конструктора формы. The PopUp property can be set only in form Design view.
Чтобы указать тип границы, который будет отображаться во всплывающем окне, используйте свойство BorderStyle . To specify the type of border that you want on a pop-up window, use the BorderStyle property. Как правило, свойству BorderStyle присвоено значение «тонкий» для всплывающих окон. You typically set the BorderStyle property to Thin for pop-up windows.
Чтобы создать настраиваемое диалоговое окно, задайте для свойства модальное свойство значение Да, свойство Popup — значение Да, а для свойства BorderStyle — диалоговое окно. To create a custom dialog box, set the Modal property to Yes, the PopUp property to Yes, and the BorderStyle property to Dialog.
Если присвоить свойству Popup значение «Да», это всплывающее окно будет отображаться только при выполнении одного из следующих действий: Setting the PopUp property to Yes makes the form a pop-up window only when you do one of the following:
- Откройте окно базы данных в представлении формы. Open it in Form view from the Database window.
- Откройте его в режиме формы с помощью макроса или Visual Basic. Open it in Form view by using a macro or Visual Basic.
- Переключение из режима конструктора в режим формы. Switch from Design view to Form view.
Если свойству Popup присвоено значение «Да», невозможно переключиться на другие представления из представления формы, так как панель инструментов формы недоступна. When the PopUp property is set to Yes, you can’t switch to other views from Form view because the form’s toolbar isn’t available. (Вы не можете переключить всплывающую форму из режима формы в режим таблицы, даже в макросе или Visual Basic.) Необходимо закрыть форму и повторно открыть ее в режиме конструктора или таблицы. (You can’t switch a pop-up form from Form view to Datasheet view, even in a macro or Visual Basic.) You must close the form and reopen it in Design or Datasheet view.
Форма не является всплывающей формой в режиме конструктора или представления таблицы, а также не при переключении из режима таблицы в представление формы. The form isn’t a pop-up form in Design view or Datasheet view, and also isn’t if you switch from Datasheet view to Form view.
Вы можете использовать параметр Dialog диалогового окна макрокоманды «ОткрытьФорму» (OpenForm ), чтобы открыть форму с всплывающими окнами и модальными свойствами, для которых задано значение «Да». You can use the Dialog setting of the WindowMode argument of the OpenForm action to open a form with its PopUp and Modal properties set to Yes.
При развертывании окна в Microsoft Access все остальные окна также размещаются в развернутом состоянии при открытии или переключении на них. When you maximize a window in Microsoft Access, all other windows are also maximized when you open them or switch to them. Однако всплывающие формы не развернуты. However, pop-up forms aren’t maximized. Если вы хотите, чтобы форма состроила свой размер при разворачивании других окон, задайте для свойства Popup свойство Popup значение Да. If you want a form to maintain its size when other windows are maximized, set its PopUp property to Yes.
Поддержка и обратная связь Support and feedback
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Создаем popup окно для сайта
Всплывающие окна – один из самых старых способов, позволяющих показать пользователю дополнительный контент. Давайте разберемся как создается popup окно для сайта?
Этот код JavaScript откроет новое окно с указанным URL. Большинство современных браузеров откроет новую вкладку вместо нового окна.
Как обойти блокировку
В недавнем прошлом всплывающими окнами слишком злоупотребляли многие сайты, нацеленные на показ рекламы. Они буквально заваливали пользователей тоннами объявлений. Чтобы избежать этого, современные браузеры блокируют всплывающие окна и защищают своих пользователей.
Они блокируют всплывающие окна, если они были вызваны вне пользовательских обработчиков событий:
А что если всплывающее окно будет открываться с помощью обработчика onclick, но после setTimeout?
Напишите следующий код:
Всплывающее окно открывается в браузере Google Chrome, но блокируется в браузере Firefox. Но если мы сократим время задержки, заработает и в Firefox:
Браузер Firefox разрешает задержку в 2000мс или меньше. Но если она длится дольше, браузер блокирует окно.
Как всплывающие окна используются сегодня
Существует много методов для загрузки и отображения данных на странице с помощью JavaScript. Но иногда всплывающие окна работают лучше всего.
Например, многие интернет-магазины используют онлайн-чаты для общения с клиентами. Посетитель нажимает на кнопку, запускается функция window.open и открывается всплывающее окно с чатом.
- Popup-окно – это отдельное окно с собственным JavaScript-кодом. Что позволяет не использовать скрипты с главной страницы онлайн-магазина.
- Простота реализации. Это всего лишь кнопка без дополнительных скриптов.
- Вплывающее окно останется, даже если пользователь переходит на другую страницу. Например, консультант может посоветовать пользователю посетить страницу, на которой представлен какой-то новый товар. Пользователь переходит на эту страницу в основном окне, но при этом не покидает чат.
window.open
Рассмотрим синтаксис метода: window.open(url, name, params):
URL для загрузки в новое окно.
Название нового окна. Каждое окно имеет свой window.name. Нужно указать, какое окно использовать в качестве всплывающего.
params
Параметры конфигурации нового окна. Содержит перечисленные через запятую параметры. Например: width:200,height=100.
Параметры для params:
- Расположение:
- left/top (число) – координаты верхнего левого угла окна на экране. Но новое окно не может быть размещено за пределами экрана.
- width/height (число) – ширина и высота нового окна. Есть ограничения по минимальной ширине/высоте, поэтому невозможно создать невидимое окно.
- Свойства окна:
- menubar (yes/no) – показать или скрыть меню браузера в новом окне.
- toolbar (yes/no) – показать или скрыть панель навигации браузера (назад, вперед, обновить текущую страницу и другие) в новом окне.
- location (yes/no) – показать или скрыть строку URL-адреса в новом окне. По умолчанию браузеры Firefox и Internet Explorer не разрешают скрывать эту строку.
- status (yes/no) – показать или скрыть панель статуса. Большинство браузеров не разрешают скрыть эту панель.
- resizable (yes/no) – позволяет отключить изменение параметров нового окна. Не рекомендуется.
- scrollbars (yes/no) – позволяет отключить полосы прокрутки в новом окне. Не рекомендуется.
Пример простого popup-окна
Откроем окно с минимальным набором параметров, чтобы понять, какие из них браузер позволит отключить:
Большая часть параметров отключено и окно расположено за пределами экрана. Запустите этот код и посмотрите, что произойдет.
Большинство браузеров самостоятельно «исправляет» такие ошибки, как нулевое значение свойств width/height и размещение окна за пределами экрана в параметрах left/top. Например, браузер Google Chrome открывает такое окно с полной шириной и высотой, поэтому окно занимает весь экран.
Добавим корректные значения width, height, left, top:
Большинство браузеров отображают приведенный выше пример правильно.
Правила для не использованных в примерах параметров:
- Если в open не указан третий аргумент или он пуст, тогда используются параметры окна по умолчанию.
- Если есть строка конфигурации params, но некоторые свойства yes/no пропущены, то они отключаются (если это разрешено браузером).
- Если в строке params отсутствуют значения left/top, браузер попытается открыть новое окно рядом с последним открытым.
- Если отсутствуют значения width/height, у нового окна будет тот же размер, что и у предыдущего открытого окна.
Доступ к popup-окну
Вызов open возвращает ссылку на новое окно. Его можно использовать для управления свойствами окна, изменения местоположения и т.д.
В примере, приведенном ниже, показано, как меняется содержимое нового окна после загрузки.
Для окон с URL, указывающими на другие сайты, можно поменять адрес источника, назначив newWindow.location=. Но нельзя получить доступ к содержимому. Это делается с целью обеспечения безопасности пользовательских данных.
Доступ к окну opener
JavaScript использует window.opener для доступа к окну, которое его открыло. Значение будет null для всех окон, кроме всплывающих окон.
У родительского окна и всплывающего есть ссылки друг на друга. Они могут свободно изменять друг друга, если они указывают на один источник.
Закрытие всплывающего окна
Чтобы закрыть popup-окно, нужно вызвать newWindow.close(). Метод close() можно вызвать для любого объекта window. Но window.close() игнорируется почти всеми браузерами, если окно было открыто не с помощью window.open().
Приведенный ниже код загружает, а потом закрывает окно:
Фокусировка popup-окна
Для фокусировки и снятия фокуса с окна существуют такие методы, как window.focus() и window.blur() . Также есть события focus/blur, которые позволяют сфокусировать окно и поймать момент, когда посетитель переключается на другой элемент сайта.
В недавнем прошлом плохие страницы этим злоупотребляли. Например, посмотрите на приведенный ниже код:
Когда пользователь пытается переключиться на другое окно (blur), это возвращает его в предыдущее. Цель состоит в том, чтобы «заблокировать» пользователя в окне.
Существуют ограничения, которые запрещают подобный код. Они зависят от конкретного браузера.
Например, мобильный браузер обычно игнорирует этот вызов. Также фокусировка не работает, когда всплывающее окно открывается на отдельной вкладке, а не в новом окне.
Тем не менее, кое-что можно сделать. Например:
- Когда мы открываем всплывающее окно, можно запустить в нем newWindow.focus() . Это гарантирует, что пользователь будет находиться в новом окне.
- Если нужно проследить, когда посетитель использует наше веб-приложение, можно отслеживать события window.onfocus/onblur. Это позволяет нам приостанавливать/возобновлять действия на странице, анимацию и т. д.
Заключение
- Всплывающее окно можно открыть вызовом метода open(url, name, params). Он возвращает ссылку в новое окно.
- По умолчанию браузеры блокируют вызовы open, если они не были инициированы действиями пользователя. Обычно появляется уведомление, в котором пользователь может самостоятельно разрешить появление всплывающего окна.
- Всплывающее окно может получить доступ к окну «opener», применив свойство window.opener. Поэтому главное и всплывающее окна связаны друг с другом.
- Главное и всплывающее окна могут изменять друг друга, если у них один источник.
- Чтобы закрыть popup-окно, используйте вызов close() . Пользователь тоже может закрыть всплывающее, как и любое другое окно на сайте.
- Методы focus() и blur() позволяют наводить фокус и снимать его с окна.
- События focus и blur позволяют отслеживать переключение между окнами.
Также, если мы открываем всплывающее окно, лучше сообщить об этом пользователю.
Popups and window methods
A popup window is one of the oldest methods to show additional document to user.
Basically, you just run:
…And it will open a new window with given URL. Most modern browsers are configured to open url in new tabs instead of separate windows.
Popups exist from really ancient times. The initial idea was to show another content without closing the main window. As of now, there are other ways to do that: we can load content dynamically with fetch and show it in a dynamically generated
Also, popups are tricky on mobile devices, that don’t show multiple windows simultaneously.
Still, there are tasks where popups are still used, e.g. for OAuth authorization (login with Google/Facebook/…), because:
- A popup is a separate window which has its own independent JavaScript environment. So opening a popup from a third-party, non-trusted site is safe.
- It’s very easy to open a popup.
- A popup can navigate (change URL) and send messages to the opener window.
Popup blocking
In the past, evil sites abused popups a lot. A bad page could open tons of popup windows with ads. So now most browsers try to block popups and protect the user.
Most browsers block popups if they are called outside of user-triggered event handlers like onclick .
This way users are somewhat protected from unwanted popups, but the functionality is not disabled totally.
What if the popup opens from onclick , but after setTimeout ? That’s a bit tricky.
The popup opens in Chrome, but gets blocked in Firefox.
…If we decrease the delay, the popup works in Firefox too:
The difference is that Firefox treats a timeout of 2000ms or less are acceptable, but after it – removes the “trust”, assuming that now it’s “outside of the user action”. So the first one is blocked, and the second one is not.
window.open
The syntax to open a popup is: window.open(url, name, params) :
url An URL to load into the new window. name A name of the new window. Each window has a window.name , and here we can specify which window to use for the popup. If there’s already a window with such name – the given URL opens in it, otherwise a new window is opened. params The configuration string for the new window. It contains settings, delimited by a comma. There must be no spaces in params, for instance: width=200,height=100 .
Settings for params :
- Position:
- left/top (numeric) – coordinates of the window top-left corner on the screen. There is a limitation: a new window cannot be positioned offscreen.
- width/height (numeric) – width and height of a new window. There is a limit on minimal width/height, so it’s impossible to create an invisible window.
- Window features:
- menubar (yes/no) – shows or hides the browser menu on the new window.
- toolbar (yes/no) – shows or hides the browser navigation bar (back, forward, reload etc) on the new window.
- location (yes/no) – shows or hides the URL field in the new window. FF and IE don’t allow to hide it by default.
- status (yes/no) – shows or hides the status bar. Again, most browsers force it to show.
- resizable (yes/no) – allows to disable the resize for the new window. Not recommended.
- scrollbars (yes/no) – allows to disable the scrollbars for the new window. Not recommended.
There is also a number of less supported browser-specific features, which are usually not used. Check window.open in MDN for examples.
Example: a minimalistic window
Let’s open a window with minimal set of features, just to see which of them browser allows to disable:
Here most “window features” are disabled and window is positioned offscreen. Run it and see what really happens. Most browsers “fix” odd things like zero width/height and offscreen left/top . For instance, Chrome open such a window with full width/height, so that it occupies the full screen.
Let’s add normal positioning options and reasonable width , height , left , top coordinates:
Most browsers show the example above as required.
Rules for omitted settings:
- If there is no 3rd argument in the open call, or it is empty, then the default window parameters are used.
- If there is a string of params, but some yes/no features are omitted, then the omitted features assumed to have no value. So if you specify params, make sure you explicitly set all required features to yes.
- If there is no left/top in params, then the browser tries to open a new window near the last opened window.
- If there is no width/height , then the new window will be the same size as the last opened.
Accessing popup from window
The open call returns a reference to the new window. It can be used to manipulate it’s properties, change location and even more.
In this example, we generate popup content from JavaScript:
And here we modify the contents after loading:
Please note: immediately after window.open , the new window isn’t loaded yet. That’s demonstrated by alert in line (*) . So we wait for onload to modify it. We could also use DOMContentLoaded handler for newWin.document .
Windows may freely access content of each other only if they come from the same origin (the same protocol://domain:port).
Otherwise, e.g. if the main window is from site.com , and the popup from gmail.com , that’s impossible for user safety reasons. For the details, see chapter Cross-window communication.
Accessing window from popup
A popup may access the “opener” window as well using window.opener reference. It is null for all windows except popups.
If you run the code below, it replaces the opener (current) window content with “Test”:
let newWin = window.open(«about:blank», «hello», «width=200,height=200»); newWin.document.write( «
Comments
- If you have suggestions what to improve — please submit a GitHub issue or a pull request instead of commenting.
- If you can’t understand something in the article – please elaborate.
- To insert few words of code, use the tag, for several lines – wrap them in
tag, for more than 10 lines – use a sandbox (plnkr, jsbin, codepen…)