Добавление мобильного веб-приложения на домашний экран с помощью кнопки - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь добавить приложение на главный экран с помощью кнопки, расположенной на странице «Настройки» моего мобильного веб-приложения на HTML5 (Примечание: оно работает, если я пытаюсь добавить его через меню Chrome).

Я настроил все эти шаги:

  • PWA еще не должен быть установлен
  • Веб-приложение должно включать манифест веб-приложения.
  • Интернетприложение должно обслуживаться через защищенное соединение HTTPS.
  • Веб-приложение зарегистрировало работника службы с обработчиком событий выборки.

В настоящее время я отлаживаю его с помощью инструментов Chrome Dev и прослушиваюна beforeinstallprompt с этим кодом из официальных документов.

<script>
let deferredPrompt;

window.addEventListener('beforeinstallprompt', function(event) {
  // Prevent Chrome 67 and earlier from automatically showing the prompt
  e.preventDefault();
  // Stash the event so it can be triggered later.
  deferredPrompt = e;
});

// Installation must be done by a user gesture! Here, the button click
btnAdd.addEventListener('click', (e) => {
  // hide our user interface that shows our A2HS button
  btnAdd.style.display = 'none';
  // Show the prompt
  deferredPrompt.prompt();
  // Wait for the user to respond to the prompt
  deferredPrompt.userChoice
    .then((choiceResult) => {
      if (choiceResult.outcome === 'accepted') {
        console.log('User accepted the A2HS prompt');
      } else {
        console.log('User dismissed the A2HS prompt');
      }
      deferredPrompt = null;
    });
});

</script>

Как перехватить событие на странице /home и передать его на страницу /settings, чтобы я мог запустить событие через событие (onClick)?

В настоящее время я использую:
Угловой CLI: 6.1.4
Узел: 8.11.4
ОС: win32 x64

1 Ответ

0 голосов
/ 16 октября 2018

Сохраните его в глобальном (window) объекте (или в другом месте с глобальным доступом) и на странице /settings в вызове обработчика событий window.deferredPrompt.prompt()?

...