How to bring chrome to foreground from a web app

人盡茶涼 提交于 2019-12-20 06:20:14

问题


Is there any windows apps/google chrome flags/google chrome extension/javascript methods or any other thing that would allow to bring a chrome window from background(minimized) to foreground when something happens inside a website. I do have access to the client computer, I could set chrome flags/kiosk mode or anything that would prevent it from opening to foreground if it's possible.

For example I am trying to bring the window to foreground when an order comes in, through a notification (I'm using firebase messages). I tried to do window.open() in setBackgroundMessageHandler() in the service worker but I get an error in console saying window is not defined

If there isn't anything available for chrome to achieve this, would creating a Microsoft Progressive Web App with the appropriate permissions allow me to bring that window to foreground from a minimized state?


回答1:


I solved it by adding this in the service worker file:

   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
            });
        }
    });

And this in the main.js file:

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);
    }
});

Now everytime I send a notification either with the window in foreground or in the background the push event fires in the serviceworker and then is using postMessage() to comunicate with the some main.js file where you have access to the window DOM component.



来源:https://stackoverflow.com/questions/55520317/how-to-bring-chrome-to-foreground-from-a-web-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!