如何将 chrome 从网络应用置于前台



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

例如,我试图在订单进来时通过通知将窗口置于前台(我使用的是 firebase 消息(。我试图在service worker setBackgroundMessageHandler()中执行window.open(),但在控制台中出现错误,说window is not defined

如果 chrome 没有任何可用功能来实现此目的,那么创建具有适当权限的 Microsoft 渐进式 Web 应用是否允许我将该窗口从最小化状态置于前台?

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

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

这在主.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() 与您可以访问window DOM 组件的某些主文件进行通信.js该文件。

相关内容

  • 没有找到相关文章

最新更新