2

我正在尝试编写一个 chrome.app,它能够在配置有两个监视器的系统的两个显示器上打开和关闭 chrome.app 窗口。启动时,chrome 应用程序与运行在同一台计算机上的本机应用程序建立套接字连接,我还通过 chrome.app.window.create 打开一个隐藏窗口以保持 chrome 应用程序正常运行。然后,本机应用程序读取配置文件,然后通过套接字向 chrome 应用程序发送一系列“openBrowser”命令。当 chrome 应用程序接收到“openBrowser”命令时,chrome 应用程序调用 chrome API 方法 chrome.app.window.create,传递创建参数和回调函数。代码片段如下:

NPMBrowserManager.prototype.openBrowser = function (browserId,htmlFile,browserBounds,hidden,grabFocus)
{
   var browserManager = this;
   var createParameters = {};

   createParameters.bounds = browserBounds;
   createParameters.hidden = hidden;

   chrome.app.window.create(htmlFile,createParameters,function(appWindow)
   {
      // Check to see if I got a non-undefined appWindow.
      if(appWindow !== null)
      {
         browserManager.browsers.push({"browserId":browserId,"window":appWindow});
         console.info("NPMBrowserManager.openBrowser: Added browser, id =" +    browserId + ", count =" + browserManager.browsers.length);
      }
   });
}

不幸的是,在创建回调中传递的“appWindow”参数始终未定义。我怀疑这与 openBrowser 方法本身被另一个处理从本机应用程序接收的命令的方法调用的事实有关。但是,窗口恰好在此处打开,当我想打开时,我似乎无法缓存有关新窗口的任何信息,以便以后用于关闭或移动窗口。

我希望能够缓存 appWindow,以便稍后在工作流中关闭或修改创建的窗口。

附带说明一下,如果我从与 chrome.app.runtime.onLaunched 事件关联的回调中调用 openBrowser 方法,我注意到 appWindow 不是未定义的。我怀疑它与当前的脚本上下文有关。我找不到任何 chrome.app 文档,其中包含有关 chrome 应用程序架构的任何详细信息。

如果有人可以向我解释如何获取在 chrome.app.window.create 方法中创建的窗口的 appWindow,我将不胜感激。顺便说一句,我也尝试调用 chrome.app.window.current 无济于事......非常沮丧!

我也对可能存在的任何文档感兴趣。我知道 developer.chrome.com,但除了参考文档之外找不到太多文档。

谢谢您的帮助!

吉姆

4

0 回答 0