Script to open application windows

Открытие окон и методы window

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

Более новая информация по этой теме находится на странице https://learn.javascript.ru/popup-windows.

Всплывающее окно («попап» – от англ. Popup window) – один из старейших способов показать пользователю ещё один документ.

В этой статье мы рассмотрим открытие окон и ряд тонких моментов, которые с этим связаны.

…При запуске откроется новое окно с указанным URL.

Большинство браузеров по умолчанию создают новую вкладку вместо отдельного окна, но чуть далее мы увидим, что можно и «заказать» именно окно.

Блокировщик всплывающих окон

Рекламные попапы очень надоели посетителям, аж со времён 20-го века, поэтому современные браузеры всплывающие окна обычно блокируют. При этом пользователь, конечно, может изменить настройки блокирования для конкретного сайта.

Всплывающее окно блокируется в том случае, если вызов window.open произошёл не в результате действия посетителя.

Как же браузер понимает – посетитель вызвал открытие окна или нет?

Для этого при работе скрипта он хранит внутренний «флаг», который говорит – инициировал посетитель выполнение или нет. Например, при клике на кнопку весь код, который выполнится в результате, включая вложенные вызовы, будет иметь флаг «инициировано посетителем» и попапы при этом разрешены.

А если код был на странице и выполнился автоматически при её загрузке – у него этого флага не будет. Попапы будут заблокированы.

Полный синтаксис window.open

Функция возвращает ссылку на объект window нового окна, либо null , если окно было заблокировано браузером.

url URL для загрузки в новое окно. name Имя нового окна. Может быть использовано в параметре target в формах. Если позднее вызвать window.open() с тем же именем, то браузеры (кроме IE) заменяют существующее окно на новое. params Строка с конфигурацией для нового окна. Состоит из параметров, перечисленных через запятую. Пробелов в ней быть не должно.

Значения параметров params .

  1. Настройки расположения окна:

left/top (число)

Координаты верхнего левого угла относительно экрана. Ограничение: новое окно не может быть позиционировано за пределами экрана.

Ширина/высота нового окна. Минимальные значения ограничены, так что невозможно создать невидимое окно с нулевыми размерами.

Если координаты и размеры не указаны, то обычно браузер открывает не окно, а новую вкладку.

  1. Свойства окна:

menubar (yes/no) Скрыть или показать строку меню браузера. toolbar (yes/no) Показать или скрыть панель навигации браузера (кнопки назад, вперёд, обновить страницу и остальные) в новом окне. location (yes/no) Показать/скрыть поле URL-адреса в новом окне. По умолчанию Firefox и IE не позволяют скрывать строку адреса. status (yes/no) Показать или скрыть строку состояния. С другой стороны, браузер может в принудительном порядке показать строку состояния. resizable (yes/no) Позволяет отключить возможность изменять размеры нового окна. Значение no обычно неудобно посетителям. scrollbars (yes/no) Разрешает убрать полосы прокрутки для нового окна. Значение no обычно неудобно посетителям.

  1. Ещё есть небольшое количество не кросс-браузерных свойств, которые обычно не используются. Вы можете узнать о них в документации, например MDN: window.open.

Браузер подходит к этим параметрам интеллектуально. Он может проигнорировать их часть или даже все, они скорее являются «пожеланиями», нежели «требованиями».

  • Если при вызове open указан только первый параметр, параметр отсутствует, то используются параметры по умолчанию. Обычно при этом будет открыто не окно, а вкладка, что зачастую более удобно.
  • Если указана строка с параметрами, но некоторые yes/no параметры отсутствуют, то браузер выставляет их в no . Поэтому убедитесь, что все нужные вам параметры выставлены в yes .
  • Когда не указан top/left , то браузер откроет окно с небольшим смещением относительно левого верхнего угла последнего открытого окна.
  • Если не указаны width/height , новое окно будет такого же размера, как последнее открытое.

Доступ к новому окну

Вызов window.open возвращает ссылку на новое окно. Она может быть использована для манипуляции свойствами окна, изменения URL, доступа к его переменным и т.п.

В примере ниже мы заполняем новое окно содержимым целиком из JavaScript:

Использование сценария для установки классических приложений в пакетах подготовки Use a script to install a desktop app in provisioning packages

Относится к: Applies to

  • Windows 10 Windows10
  • Windows 10 Mobile Windows10 Mobile

В этом пошаговом руководстве описаны способы использования возможностей включения сценариев в пакет подготовки Windows 10 для установки приложений Win32. This walkthrough describes how to leverage the ability to include scripts in a Windows 10 provisioning package to install Win32 applications. Также в рамках сценариев можно выполнять другие операции помимо установки приложений. Однако здесь необходимо действовать аккуратно, чтобы предотвратить непредвиденное поведение во время выполнения сценария (см. примечания ниже). Scripted operations other than installing apps can also be performed, however, some care is needed in order to avoid unintended behavior during script execution (see Remarks below).

Этот сценарий поддерживается только для установки приложений в Windows 10 для настольных систем версии 1511 или выше. This scenario is only supported for installing applications on Windows 10 for desktop, version 1511 or higher.

Читайте также:  Windows переключение между раскладками

Сборка ресурсов приложения Assemble the application assets

На устройстве, где создается пакет, поместите все ваши ресурсы в известное расположение. On the device where you’re authoring the package, place all of your assets in a known location. Каждый ресурс должен иметь уникальное имя файла, так как все файлы будут скопированы в одну папку temp на устройстве. Each asset must have a unique filename, because all files will be copied to the same temp directory on the device. Довольно часто у разных приложений установщик размещается в файле под названием install.exe или подобном ему, и из-за этого может возникнуть конфликт имен. It’s common for many apps to have an installer called ‘install.exe’ or similar, and there may be name overlap because of that. Чтобы устранить эту проблему, можно использовать метод, описанный в следующем пункте, для включения полной структуры каталогов, которая затем будет развернута во временной папке на устройстве. To fix this, you can use the technique described in the next step to include a complete directory structure that is then expanded into the temp directory on the device. Чаще всего для этого создают подкаталог для каждого приложения. The most common use for this would be to include a subdirectory for each application.

Если вы хотите включить структуру каталогов с файлами, необходимо поместить ресурсы в файлы с расширением .cab, что позволит легко включить в них пакеты подготовки. If you need to include a directory structure of files, you will need to cab the assets for easy inclusion in the provisioning packages.

Создайте DDF-файл, как показано ниже, заменив file1 и file2 файлами, которые необходимо упаковать, и добавив имя файла или каталога. Create a .DDF file as below, replacing file1 and file2 with the files you want to package, and adding the name of file/directory.

Используйте команду makecab для создания CAB-файлов. Use makecab to create the cab files.

Создание сценария для установки приложения Create the script to install the application

В Windows 10 версии 1607 и более ранних версиях создайте сценарий для выполнения всей работы, необходимой для установки одного или нескольких приложений. In Windows 10, version 1607 and earlier, create a script to perform whatever work is needed to install the application(s). Ниже приведены примеры, которые помогут вам начать работу с создания управляющего сценария, который будет выполнять необходимые установщики. The following examples are provided to help get started authoring the orchestrator script that will execute the required installers. На практике управляющий сценарий может использовать гораздо большее число ресурсов, чем в этих примерах. In practice, the orchestrator script may reference many more assets than those in these examples.

В Windows 10 версии 1703 не нужно создавать управляющий сценарий. In Windows 10, version 1703, you don’t need to create an orchestrator script. В одном приложении может быть только одна командная строка. You can have one command line per app. При необходимости можно создать сценарий, который записывает выходные данные каждого приложения, как описано ниже (вместо одного управляющего сценария для всего пакета подготовки). If necessary, you can create a script that logs the output per app, as mentioned below (rather than one orchestrator script for the entire provisioning package).

Все действия, выполняемые сценарием, должны производиться без отображения пользовательского интерфейса и без участия пользователя. All actions performed by the script must happen silently, showing no UI and requiring no user interaction.

Сценарии будут выполняться на устройстве в системном контексте. The scripts will be run on the device in system context.

Пример отладки Debugging example

Функция подробного ведения журнала не является встроенной, поэтому процедуры для записи журнала должны быть включены в сам сценарий. Granular logging is not built in, so the logging must be built into the script itself. Вот образец сценария, который записывает в файл журнала фразу Hello World. Here is an example script that logs ‘Hello World’ to a logfile. При запуске на устройстве файл журнала будет доступен после завершения подготовки. When run on the device, the logfile will be available after provisioning is completed. Как вы увидите в следующих примерах, рекомендуется записывать в журнал каждое действие, выполняемое сценарием. As you will see in the following examples, it’s recommended that you log each action that your script performs.

Пример с .exe .exe example

В этом примере сценария показано, как создать файл журнала на системном диске, установить приложение из установщика с расширением EXE и отразить результаты в файле журнала. This example script shows how to create a log output file on the system drive, install an app from a .exe installer, and echo the results to the log file.

Пример с .msi .msi example

Здесь нет отличий от предыдущего установщика кроме того, что приложение устанавливается из установщика с расширением MSI. This is the same as the previous installer, but installs the app from an MSI installer. Обратите внимание, что команда msiexec вызывается с флагом /quiet для соблюдения требований по фоновому выполнению сценариев из пакета подготовки. Notice that msiexec is called with the /quiet flag in order to meet the silent requirement of scripts run from within a provisioning package.

Пример PowerShell PowerShell example

Это пример сценария с ведением журнала, демонстрирующий, как можно запустить сценарий powershell из параметра команд подготовки. This is an example script with logging that shows how to run a powershell script from the provisioning commands setting. Обратите внимание, что сценарий PowerShell, приведенный в этом примере, также должен быть включен в пакет и соблюдать те же требования, что и все остальные сценарии, запускаемые из пакета подготовки: он должен выполняться в фоновом режиме без участия пользователя. Note that the PowerShell script referenced from this example must also be included in the package, and obey the same requirements as all scripts run from within the provisioning package: it must execute silently, with no user interaction.

Читайте также:  Kms авто для windows 10

### Выдержка из примера с CAB-файлом Extract from a .CAB example

В этом примере сценария показано разворачивание CAB-файла из сценария команд подготовки, а также установка развернутого файла setup.exe This example script shows expansion of a .cab from the provisioning commands script, as well as installation of the expanded setup.exe

Вызов нескольких сценариев в пакете Calling multiple scripts in the package

В Windows 10 версии 1703 пакет подготовки может включать несколько CommandLine. In Windows 10, version 1703, your provisioning package can include multiple CommandLines.

В Windows 10 версии 1607 и более ранних версий вы можете использовать только один CommandLine в одном пакете подготовки. In Windows 10, version 1607 and earlier, you are allowed one CommandLine per provisioning package. Пакетные файлы, приведенные выше, — это управляющие сценарии, которые контролируют установку и вызывают все остальные сценарии, включенные в пакет подготовки. The batch files shown above are orchestrator scripts that manage the installation and call any other scripts included in the provisioning package. Из параметра CommandLine, указанного в пакете, должен вызываться именно управляющий сценарий. The orchestrator script is what should be invoked from the CommandLine specified in the package.

Ниже приведена таблица с описанием этих взаимосвязей на основе приведенного выше примера для PowerShell. Here’s a table describing this relationship, using the PowerShell example from above:

Параметр ICD ICD Setting Значение Value Описание Description
ProvisioningCommands/DeviceContext/CommandLine ProvisioningCommands/DeviceContext/CommandLine cmd /c PowerShell_Example.bat cmd /c PowerShell_Example.bat Командная строка, необходимая для вызова управляющего сценария. The command line needed to invoke the orchestrator script.
ProvisioningCommands/DeviceContext/CommandFiles ProvisioningCommands/DeviceContext/CommandFiles PowerShell_Example.bat PowerShell_Example.bat Один управляющий сценарий, указанный в командной строке, который обрабатывает вызовы всех необходимых установщиков и выполнение всех остальных действий, таких как разворачивание CAB-файлов. The single orchestrator script referenced by the command line that handles calling into the required installers or performing any other actions such as expanding cab files. Ведение журнала должно обеспечиваться этим сценарием. This script must do the required logging.
ProvisioningCommands/DeviceContext/CommandFiles ProvisioningCommands/DeviceContext/CommandFiles my_powershell_script.ps1 my_powershell_script.ps1 Другие ресурсы, указанные в управляющем сценарии. Other assets referenced by the orchestrator script. В этом примере используется только один ресурс, но здесь может быть указано множество ресурсов. In this example there is only one, but there could be many assets referenced here. Довольно часто управляющий сценарий используют для вызова ряда установщиков вида setup.exe или install.exe для установки нескольких приложений. One common use case is using the orchestrator to call a series of install.exe or setup.exe installers to install several applications. Каждый из этих установщиков должен быть указан здесь как ресурс. Each of those installers must be included as an asset here.

Добавление сценария в пакет подготовки (Windows 10 версии 1607) Add script to provisioning package (Windows 10, version 1607)

После записи пакетного файла и подготовки используемых ресурсов для включения в пакет их можно добавить в пакет подготовки в конструкторе конфигураций Windows. When you have the batch file written and the referenced assets ready to include, you can add them to a provisioning package in the Window Configuration Designer.

С помощью конструктора конфигураций Windows укажите всю информацию о том, как сценарий должен выполняться с использованием параметра CommandLine в пакете подготовки. Using Windows Configuration Designer, specify the full details of how the script should be run in the CommandLine setting in the provisioning package. Сюда входят флаги и любые другие параметры, которые вы обычно вводите в командной строке. This includes flags or any other parameters that you would normally type on the command line. Поэтому, если пакет содержит установщик приложения под названием install.exe и сценарий для автоматизации установки под названием InstallMyApp.bat, параметр ProvisioningCommands/DeviceContext/CommandLine должен иметь следующее значение: So for example if the package contained an app installer called install.exe and a script used to automate the install called InstallMyApp.bat, the ProvisioningCommands/DeviceContext/CommandLine setting should be configured to:

В конструкторе конфигураций Windows это выглядит следующим образом: In Windows Configuration Designer, this looks like:

Также необходимо добавить соответствующие ресурсы для этого параметра командной строки, включая управляющий сценарий и все остальные ресурсы, на которые он ссылается, например установщики или CAB-файлы. You also need to add the relevant assets for that command line including the orchestrator script and any other assets it references such as installers or .cab files.

В конструкторе конфигураций Windows это выполняется путем добавления файлов в параметр ProvisioningCommands/DeviceContext/CommandFiles . In Windows Configuration Designer, that is done by adding files under the ProvisioningCommands/DeviceContext/CommandFiles setting.

По завершении всех действий выполните сборку пакета. When you are done, build the package.

Примечания Remarks

Взаимодействие с пользователем и вывод на консоль не поддерживаются при использовании ProvisioningCommands. No user interaction or console output is supported via ProvisioningCommands. Вся работа должна выполняться автоматически. All work needs to be silent. Если ваш сценарий попытается выполнить какие-либо из указанных ниже действий, это приведет к возникновению неопределенного поведения, что может привести устройство в не подлежащее восстановлению состояние, если эти действия выполняются во время установки или запуска при первом включении: а) If your script attempts to do any of the following it will cause undefined behavior, and could put the device in an unrecoverable state if executed during setup or the Out of Box Experience: a. Вывод на консоль. б) Echo to console b. Отображение каких-либо данных на экране. в) Display anything on the screen c. Отображение пользователю диалогового окна или мастера установки. Prompt the user with a dialog or install wizard

При применении во время первой загрузки подготовка выполняется на ранней стадии загрузки и до установления пользовательского контекста, поэтому важно включать сюда только те установщики, которые могут выполняться в этот момент. When applied at first boot, provisioning runs early in the boot sequence and before a user context has been established; care must be taken to only include installers that can run at this time. Другие установщики можно подготовить с помощью средства управления. Other installers can be provisioned via a management tool.

Если устройство приходит в неподлежащее восстановлению состояние из-за некачественного сценария, его можно сбросить с помощью функций восстановления в Windows 10. If the device is put into an unrecoverable state because of a bad script, you can reset it using recovery options in Windows 10.

Ресурсы CommandFile развертываются на устройстве во временную папку, уникальную для каждого пакета. The CommandFile assets are deployed on the device to a temporary folder unique to each package.

  • Для Windows 10 версии 1607 и более ранних версий: a. For Windows 10, version 1607 and earlier: a. Для пакетов, добавленных во время запуска при первом включении, эта папка обычно находится по следующему пути: %WINDIR%\system32\config\systemprofile\appdata\local\Temp\ProvisioningPkgTmp\ \Commands b. For packages added during the out of box experience, this is usually in %WINDIR%\system32\config\systemprofile\appdata\local\Temp\ProvisioningPkgTmp\ \Commands b. Для пакетов, добавленных двойным щелчком по уже развернутому устройству, это будет временная папка пользователя, выполняющего пакет PPKG: For packages added by double-clicking on an already deployed device, this will be in the temp folder for the user executing the PPKG: %TMP%\ProvisioningPkgTmp\ \Commands
  • Для Windows 10 версии 1703: a. For Windows 10, version 1703: a. Для пакетов, добавленных при первом включении, эта папка обычно находится по следующему пути %WINDIR%\system32\config\systemprofile\appdata\local\Temp\ProvisioningPkgTmp\ \Commands\0 . 0 после Commands\ относится к порядку установки и обозначает первое приложение, которое необходимо установить. For packages added during the out of box experience, this is usually in %WINDIR%\system32\config\systemprofile\appdata\local\Temp\ProvisioningPkgTmp\ \Commands\0 The 0 after Commands\ refers to the installation order and indicates the first app to be installed. Для каждого приложения в пакете номер будет возрастать. The number will increment for each app in the package. b. b. Для пакетов, добавленных двойным щелчком по уже развернутому устройству, это будет временная папка пользователя, выполняющего пакет подготовки: For packages added by double-clicking on an already deployed device, this will be in the temp folder for the user executing the provisioning package: %TMP%\ProvisioningPkgTmp\ \Commands\0

Параметры командной строки будут выполняться в том каталоге, в котором файлы CommandFiles развернуты как в рабочий каталог. The command line will be executed with the directory the CommandFiles were deployed to as the working directory. Это означает, что вам не нужно указывать полный путь к ресурсам в командной строке и в сценариях. This means you do not need to specific the full path to assets in the command line or from within any script.

Компонент подготовки среды выполнения будет пытаться запускать сценарии из пакета подготовки как можно раньше, в зависимости от того, на какой стадии пакет PPKG был добавлен. The runtime provisioning component will attempt to run the scripts from the provisioning package at the earliest point possible, depending on the stage when the PPKG was added. Например, если пакет добавлен во время запуска при первом включении, он будет выполняться сразу же после применения пакета, когда процедура запуска при первом включении еще не закончена. For example, if the package was added during the Out-of-Box Experience, it will be run immediately after the package is applied, while the out of box experience is still happening. Это происходит до того, как пользователю будут предложены варианты настройки учетной записи. This is before the user account configuration options are presented to the user. На экране появится диалоговое окно с вращающимся индикатором хода выполнения и надписью «подождите». A spinning progress dialog will appear and “please wait” will be displayed on the screen.

С этого момента время ожидания для процесса подготовки составляет 30 минут. There is a timeout of 30 minutes for the provisioning process at this point. Все сценарии и процедуры установки должны быть завершены в течение этого времени. All scripts and installs need to complete within this time.

Сценарии выполняются в фоновом режиме, по мере того как продолжается выполнение остальных частей процесса подготовки. The scripts are executed in the background as the rest of provisioning continues to run. Для пакетов, добавленных в существующие системы путем двойного щелчка для установки, уведомлений о том, что подготовка или выполнение сценария завершены, нет. For packages added on existing systems using the double-click to install, there is no notification that provisioning or script execution has completed

Читайте также:  Linux включить трафик между интерфейсами
Оцените статью