如何通过Web应用程序将chrome引入前景

时间:2019-04-04 15:55:21

标签: javascript google-chrome progressive-web-apps minimize background-foreground

当网站内部发生某件事时,是否有任何windows apps/google chrome flags/google chrome extension/javascript methods或其他任何东西可以将Chrome窗口从背景(最小化)带到前景(最小化)。我确实可以访问客户端计算机,可以设置chrome标志/信息亭模式或任何可能的阻止它打开到前台的方法。

例如,我尝试通过通知将订单到达时将窗口置于前台(我正在使用Firebase消息)。 我尝试在window.open()的{​​{1}}中进行setBackgroundMessageHandler(),但在控制台中却收到一个错误,说service worker

如果chrome无法实现此目标,是否可以创建具有适当权限的 Microsoft Progressive Web App 允许我将窗口从最小化状态变为前台?

1 个答案:

答案 0 :(得分:0)

我通过在服务工作者文件中添加此文件来解决它:

   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事件都会在serviceworker中触发,然后使用postMessage()与某个main.js文件进行通讯可以访问window DOM组件。