当网站内部发生某件事时,是否有任何windows apps/google chrome flags/google chrome extension/javascript methods
或其他任何东西可以将Chrome窗口从背景(最小化)带到前景(最小化)。我确实可以访问客户端计算机,可以设置chrome标志/信息亭模式或任何可能的阻止它打开到前台的方法。
例如,我尝试通过通知将订单到达时将窗口置于前台(我正在使用Firebase消息)。
我尝试在window.open()
的{{1}}中进行setBackgroundMessageHandler()
,但在控制台中却收到一个错误,说service worker
如果chrome无法实现此目标,是否可以创建具有适当权限的 Microsoft Progressive Web App 允许我将窗口从最小化状态变为前台?
答案 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组件。