【发布时间】:2019-04-04 15:55:21
【问题描述】:
当网站内部发生某些事情时,是否有任何 windows apps/google chrome flags/google chrome extension/javascript methods 或任何其他东西可以让 Chrome 窗口从背景(最小化)到前景。我确实可以访问客户端计算机,如果可能的话,我可以设置 chrome 标志/kiosk 模式或任何会阻止它打开到前台的东西。
例如,当订单进入时,我试图通过通知将窗口置于前台(我正在使用 firebase 消息)。
我尝试在setBackgroundMessageHandler() 中的service worker 中执行window.open(),但我在控制台中出现错误提示window is not defined
如果 chrome 无法实现此目的,创建具有适当权限的 Microsoft Progressive Web App 是否允许我将该窗口从最小化状态带到前台?
【问题讨论】:
-
你可以创建一个原生的windows应用程序并使用win32 sendmessage/postmessage来聚焦窗口。
-
你需要在窗口对象上做一个
.focus()。但是,如果没有代码示例,就很难知道是什么创建了窗口以及如何获取该窗口对象。如果您正在创建要放在前面的窗口,您可以将window.open()的结果分配给一个变量(例如var myWindow=window.open(...etc...)),然后使用myWindow.focus()在该变量上运行.focus()。 -
@Mr. Zach 我不知道如何编写原生 Windows 应用程序,pwa 可以工作吗?
-
@Fat Monk 会在 serviceworker 中的 setBackgroundMessageHandler() 中使用 window.open()、window.focus() 吗?
-
setBackgroundMessageHandler()附加到哪个对象?我猜可能存在对象“范围”/可见性问题,但如果没有看到从哪里以及以什么顺序调用什么,就很难说。窗口最初是从哪里打开的?下单时它是否一直存在,或者如果它不存在,是否需要创建窗口?
标签: javascript google-chrome progressive-web-apps minimize background-foreground