2011-08-04

Chrome Extensionのポップアップを明示的に閉じる

Chrome Extensionでpupup.htmlを明示的に閉じるためには、window.close() を呼べばよい。
ここで注意したいのは、Chrome Extension APIで多用されるコールバック関数の処理がちゃんと終了してからwindow.close() を呼ぶ必要があるということだ。そうしないと、ブラウザがクラッシュすることさえあるようだ。
たとえば、Webページをタブに開いた後で、popup.htmlを閉じる場合は、次のようにコールバック関数の中でwindow.close() を実行する必要がある。
chrome.tabs.create(
    {"url": "http://bit.ly/oiWu31"}, 
    function(tab) {
        window.close(); 
    }
);
一挙にショッピング検索でやっているように、複数のタブを開く場合は、すべてのタブが開いたことを確認した後で、window.close() を呼ぶ必要がある。これには、setInterval() を使うことになるだろう。