我正在尝试编写一个chrome.app,它能够在配置有两个监视器的系统的两个显示器上打开和关闭chrome.app窗口。启动时,chrome应用程序与在同一台计算机上运行的本机应用程序建立套接字连接,我还通过chrome.app.window.create打开一个隐藏窗口,以保持chrome应用程序的正常运行。然后,本机应用程序读取配置文件,然后通过套接字向chrome应用程序发送一系列“openBrowser”命令。 当chrome应用程序收到'openBrowser'命令时,chrome应用程序调用chrome API方法chrome.app.window.create,传递create parameters和一个回调函数。代码段如下:
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.app文档。
如果有人可以向我解释如何获取chrome.app.window.create方法中创建的窗口的appWindow,我将非常感激。顺便说一句,我也试过调用chrome.app.window.current无济于事......非常令人沮丧!
我也对可能存在的任何文档感兴趣。我知道developer.chrome.com,但找不到参考文档以外的其他文档。
感谢您的帮助!
吉姆