是否有任何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该文件。