2 台のモニターで構成されたシステムの両方のディスプレイで chrome.app ウィンドウを開閉できる chrome.app を作成しようとしています。chrome アプリケーションを起動すると、同じコンピューターで実行されているネイティブ アプリケーションとのソケット接続が確立されます。また、chrome.app.window.create を介して非表示のウィンドウを開き、chrome アプリケーションを稼働させ続けます。次に、ネイティブ アプリケーションは構成ファイルを読み取り、一連の「openBrowser」コマンドをソケット経由で chrome アプリケーションに送信します。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 アプリのアーキテクチャについて詳しく説明している chrome.app のドキュメントは見つかりませんでした。
chrome.app.window.create メソッドで作成されたウィンドウの appWindow を取得する方法を誰かが説明してくれたら、とてもありがたいです。ちなみに、chrome.app.window.current を呼び出してみましたが、うまくいきませんでした... 非常にイライラします!!!
また、存在する可能性のあるドキュメントにも興味があります。私は developer.chrome.com を認識していますが、リファレンス ドキュメント以外の多くのドキュメントを見つけることができませんでした。
助けてくれてありがとう!
ジム