Chrome Packaged Appで常に1つだけウィンドウを開く('13/12/23追記)

More than 5 years have passed since last update.

何もしないといくつもウィンドウが開けてしまうので、既に開いている場合はそのウィンドウにフォーカスするコード。

chrome.app.window.createのコールバックに渡されるAppWindowと、AppWindowのonClosedイベントを利用。


main.coffee


@current_window = null

chrome.app.runtime.onLaunched.addListener ( ) =>

if current_window?
current_window.focus( )
else
chrome.app.window.create 'window.html',
width : 500,
height: 400
, ( app_window ) =>
@current_window = app_window
@current_window.onClosed.addListener ( ) => @current_window = null



追記

今は chrome.app.window.create のオプションで指定するオブジェクトに、idプロパティを指定すれば全く同じ挙動を実現できます。

chrome.app.window.create 'window.html',

id: 'main'
width: 500
height: 400

ちなみにidプロパティを設定しておくと、ウィンドウの位置とサイズを勝手に覚えておいてくれるようです。(ドキュメントより)