Запустить API-обработчик

Управляйте запуском вашего приложения.

API обработчика запуска позволяет управлять запуском приложения, например, использовать ли существующее или новое окно, и будет ли выбранное окно перенаправлено на URL-адрес запуска. Как и в случае с API обработки файлов, он также добавляет объект LaunchParams в window.launchQueue запущенной страницы.

Текущий статус

Шаг Статус
1. Создайте пояснитель Полный
2. Создайте первоначальный проект спецификации Полный
3. Собирайте отзывы и дорабатывайте дизайн Полный
4. Испытание происхождения. Полный
5. Запуск Полный

Используйте API обработчика запуска

Поддержка браузеров

Интерфейсы

API обработчика запуска определяет два новых интерфейса.

LaunchParams : объект, содержащий targetURL , который будет обработан потребителем. LaunchQueue : очереди запускаются до тех пор, пока они не будут обработаны указанным потребителем.

Член манифеста launch_handler

Чтобы декларативно задать поведение запуска приложения, добавьте в манифест элемент launch_handler . Он содержит одно подполе client_mode . Оно позволяет управлять запуском нового или существующего клиента, а также навигацией по этому клиенту. В следующем примере показан файл с примерами значений, которые всегда будут перенаправлять все запуски новому клиенту.

{   "launch_handler": {     "client_mode": "navigate-new"   } } 

Если не указано иное, launch_handler по умолчанию принимает значение {"client_mode": "auto"} . Допустимые значения для подполей:

  • client_mode :
    • navigate-new : в окне веб-приложения создается новый контекст просмотра для загрузки целевого URL-адреса запуска.
    • navigate-existing : последнее взаимодействие с контекстом просмотра в окне веб-приложения перенаправляется на целевой URL-адрес запуска.
    • focus-existing : для запуска выбирается последний взаимодействующий контекст браузера в окне веб-приложения. Новый объект LaunchParams , в котором targetURL равен URL-адресу запуска, будет добавлен в очередь window.launchQueue документа.
    • auto : пользовательскому агенту необходимо самостоятельно определить, что лучше всего подходит для платформы. Например, мобильные устройства поддерживают только одиночные клиенты и будут использовать значение existing-client , в то время как настольные устройства поддерживают несколько окон и будут использовать navigate-new для предотвращения потери данных.

Свойство client_mode также принимает список (массив) значений, где будет использоваться первое допустимое значение. Это позволяет добавлять новые значения в спецификацию, не нарушая обратную совместимость с существующими реализациями.

Например, если бы было добавлено гипотетическое значение "focus-matching-url" , сайты указали бы "client_mode": ["focus-matching-url", "navigate-existing"] , чтобы продолжить контролировать поведение старых браузеров, которые не поддерживают "focus-matching-url" .

Использовать window.launchQueue

В следующем коде функция extractSongID() извлекает songID из URL-адреса, переданного при запуске. Это используется для воспроизведения песни в музыкальном плеере PWA.

if ('launchQueue' in window) {   launchQueue.setConsumer((launchParams) => {     if (launchParams.targetURL) {       const songID = extractSongId(launchParams.targetURL);       if (songID) {         playSong(songID);       }     }   }); } 

Демо

Демонстрацию API Launch Handler можно увидеть в действии на странице PWA Launch Handler Demo . Обязательно ознакомьтесь с исходным кодом приложения, чтобы увидеть, как оно использует API Launch Handler.

  1. Установите приложение Musicr 2.0 .
  2. Отправьте себе ссылку в чате приложения формы https://mdn.github.io/dom-examples/launch-handler/?track=https://example.com/music.mp3 . (Вы можете настроить https://example.com/music.mp3 для любого URL -адреса, указывающего на аудиофайл, например,, например, https://mdn.github.io/dom-examples/launch-handler/?track=https://huggingface.co/spaces/VIDraft/PHI4-Multimodal/resolve/main/examples/harvard.wav ).
  3. Нажмите ссылку в приложении чата и обратите внимание, как Musicr 2.0 открывается и воспроизводит трек.
  4. Снова щелкните ссылку в приложении чата и обратите внимание, что вы не получите второй экземпляр Musicr 2.0 .

Обратная связь

Команда Chromium хочет узнать о вашем опыте работы с API Launch Handler.

Расскажите нам о дизайне API

Есть ли что-то в API, что работает не так, как вы ожидали? Или отсутствуют методы или свойства, необходимые для реализации вашей идеи? Есть вопросы или комментарии по модели безопасности? Отправьте запрос на спецификацию в соответствующий репозиторий GitHub или добавьте свои замечания к существующему запросу.

Сообщить о проблеме с реализацией

Вы обнаружили ошибку в реализации Chromium? Или реализация отличается от спецификации? Сообщите об ошибке на сайте new.crbug.com . Опишите её как можно подробнее, укажите инструкции по воспроизведению и введите Blink>AppManifest в поле «Компоненты» .

Показать поддержку API

Планируете ли вы использовать API Launch Handler? Ваша публичная поддержка помогает команде Chromium расставлять приоритеты в отношении функций и показывает другим разработчикам браузеров, насколько важна их поддержка.

Отправьте твит @ChromiumDev , используя хэштег #LaunchHandler , и расскажите, где и как вы его используете.

Полезные ссылки