如何将 chrome 从网络应用程序带到前台
How to bring chrome to foreground from a web app
是否有任何 windows apps/google chrome flags/google chrome extension/javascript methods
或任何其他东西可以将 chrome window 从背景(最小化)带到前景当网站内部发生某些事情时。我确实可以访问客户端计算机,我可以设置 chrome flags/kiosk 模式或任何可能阻止它打开到前台的设置。
例如,我试图在收到订单时通过通知将 window 置于前台(我使用的是 firebase 消息)。
我尝试在 service worker
中的 setBackgroundMessageHandler()
中执行 window.open()
,但我在控制台中收到错误提示 window is not defined
如果 chrome 没有任何可用的方法来实现这一点,我是否可以创建具有适当权限的 Microsoft Progressive Web App 让我可以带来 window 从最小化状态到前景?
我通过在 service worker 文件中添加这个来解决它:
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);
}
});
现在每次我在前台或后台发送带有 window 的通知时,push
事件都会在 serviceworker 中触发,然后使用 postMessage()
与一些人进行通信main.js 文件,您可以在其中访问 window
DOM 组件。
是否有任何 windows apps/google chrome flags/google chrome extension/javascript methods
或任何其他东西可以将 chrome window 从背景(最小化)带到前景当网站内部发生某些事情时。我确实可以访问客户端计算机,我可以设置 chrome flags/kiosk 模式或任何可能阻止它打开到前台的设置。
例如,我试图在收到订单时通过通知将 window 置于前台(我使用的是 firebase 消息)。
我尝试在 service worker
中的 setBackgroundMessageHandler()
中执行 window.open()
,但我在控制台中收到错误提示 window is not defined
如果 chrome 没有任何可用的方法来实现这一点,我是否可以创建具有适当权限的 Microsoft Progressive Web App 让我可以带来 window 从最小化状态到前景?
我通过在 service worker 文件中添加这个来解决它:
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);
}
});
现在每次我在前台或后台发送带有 window 的通知时,push
事件都会在 serviceworker 中触发,然后使用 postMessage()
与一些人进行通信main.js 文件,您可以在其中访问 window
DOM 组件。