javascript - 如何知道 Chrome 应用程序窗口何时完全打开

标签 javascript google-chrome-extension google-chrome-app

我正在创建一个 Chrome 应用程序,“不是扩展程序”。 人们可以接收和发送消息。如果我收到消息,我会收到通知和 mp3 声音。如果应用程序窗口打开,我知道如何聚焦窗口以使其显示在前面。但如果 window 是关着的。我确实收到了通知、声音等(来自background.js),当我收到此通知时,我创建了一个要打开的窗口,但我无法再与background.js 脚本交互。就像 chrome.runtime.sendMessage 在我的应用程序窗口完全打开之前触发一样。

chrome.runtime.sendMessage({
  action: "Messageincoming"
});

当有消息传入时,在我的应用程序中,会出现一个弹出窗口,告诉用户有消息传入(从 background.js 调用),用户可以通过单击按钮接受它。但是当应用程序窗口关闭时,我应该打开一个新窗口,然后使用 chrome.app.window.create('myapp.html', {

以编程方式打开它

就像我说的,chrome.runtime.sendMessage 似乎在窗口完全打开之前不久就触发了。我无法触发此弹出窗口以使用户接受,并且我不确定如果我这样做该按钮是否会起作用。

有没有办法等到窗口完全打开?或使用任何其他方法。 我阅读了所有 chrome 应用程序文档,但什么也没找到。我在 myapp.html 页面中有一个 js 脚本,它控制点击和 UI 中的所有内容。 Controller .js

最佳答案

有多种方法可以实现此目的,因此这实际上取决于您要寻找的内容。最简单的答案可能是通过回调函数,您可以将其传递给 chrome.app.window.create,如下所示 here 。这将允许您传入要在页面加载期间执行的函数。

另一种方法是接收您所描述的消息。您也可以这样做,但是您需要在创建的新页面中设置消息处理程序,并且需要在页面加载时立即设置它,否则您将错过您所描述的消息。下面是有关消息传递的更多信息,并在底部提供了一些示例。 https://developer.chrome.com/extensions/messaging

执行此操作的更复杂的方法可能是 Hook 到新窗口的 OnFullscreened 或其他处理程序。在该处理程序中,向后台脚本发送请求,请求您需要的任何消息数据。在您的后台脚本中,有一个消息处理程序,它返回您想要的任何存储的消息。

关于javascript - 如何知道 Chrome 应用程序窗口何时完全打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35087743/

相关文章:

javascript - rails 6.1 : Webpacker can't find application. js

android - 如何借助插件在 Web 浏览器上测试基于 Android 的移动页面?

android - 如何运行 chrome 工具而不是浏览器

google-chrome-extension - 在生产和开发环境中处理 URL

google-chrome - Chrome ExtensionInstallSources

c++ - 将 unsigned char 字符串从 native 客户端模块发送到浏览器

javascript - Mobile Chrome Apps 只是一个 API polyfill 还是包含实际的 Chrome?

javascript - 如何获得最后一个聚焦字段?

javascript - jQuery ajax "too much recursion"

javascript - 无法访问 JavaScript 属性