Как вывести Chrome на передний план из веб-приложения - PullRequest
0 голосов
/ 04 апреля 2019

Есть ли windows apps/google chrome flags/google chrome extension/javascript methods или любая другая вещь, которая позволила бы вывести хромовое окно из фона (свернуто) на передний план , когда что-то происходит внутри веб-сайта.У меня есть доступ к клиентскому компьютеру, я могу установить режим chrome flags / kiosk или любой другой режим, который не позволит открыть его на переднем плане, если это возможно.

Например, я пытаюсь вывести окно на передний план, когдазаказ приходит через уведомление (я использую сообщения Firebase).Я попытался сделать window.open() в setBackgroundMessageHandler() в service worker, но в консоли я получаю сообщение об ошибке: window is not defined

Если для Chrome ничего не доступно, можно создать Microsoft Progressive Web App с соответствующими разрешениями позволяет мне вывести это окно на передний план из свернутого состояния?

1 Ответ

0 голосов
/ 07 апреля 2019

Я решил это, добавив это в файл рабочего сервиса:

   self.addEventListener('push', function (e) {
        if (e.data) {
            var payloadData = e.data.json();
            self.clients.matchAll({includeUncontrolled: true}).then(function (clients) {
                clients[0].postMessage(payloadData); // you can do foreach but I only needed one client to open one window
            });
        }
    });

И это в файле main.js:

function openNotificationWindow(url) {
    var myWindow = window.open(url);   // Opens a new window
    myWindow.focus();
    myWindow.location.reload(true);
}

navigator.serviceWorker.addEventListener('message', function (event) {
    if (typeof event.data.data !== 'undefined') {
        openNotificationWindow(url);
    }
});

Теперь каждый раз, когда я отправляю уведомление либо св окне на переднем плане или на заднем плане событие работника push запускается в сервисной программе, а затем использует postMessage() для соединения с некоторым файлом main.js, где у вас есть доступ к компоненту window DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...