タブにindex番号を設定する

Lunascapeでは表示されているタブにはインデックス番号が割り当てられています。インデックス番号は0からはじまり0、1、2...のように連番で割り当てられていきます。

現在、アクティブになっているタブウィンドウのインデックス番号はActiveIndexプロパティに入っています。もし、タブウィンドウが1つも表示されていない場合、ActiveIndexは-1になります。また、特定のインデックス番号を持つタブウィンドウをアクティブにしたいのであれば、ActiveIndexにインデックス番号を設定します。

アクティブになっているタブウィンドウ以外を閉じるには、現在表示されているタブウィンドウの数を求めておく必要があります。現在表示されているタブウィンドウの総数はGetCount()で取得できます。

アクティブになっているタブウィンドウ以外を閉じるには、アクティブになっているタブウィンドウのインデックス番号以外のタブウィンドウを閉じるようにfor()を使って繰り返し処理を行います。タブウィンドウを閉じるにはClose()メソッドを使います。Close()メソッドには閉じたいタブウィンドウのインデックス番号をパラメータとして指定します。

また、Close()メソッドで注意しなければならないことがあります。Close()メソッドによりタブウィンドウが閉じられると、インデックス番号が動的に変更されてしまいます。このため、for()で0から順番に昇順でタブウィンドウを閉じていくと正しく動作しません。このような場合にはfor()で降順に処理を行うようにします。

実際のスクリプトは以下のようになります。サイドバーに登録して動作を確認しましょう。

図4 スクリプト実行前。複数のタブが表示されている

図5 スクリプトを実行するとアクティブなタブ以外、すべて閉じられる

スクリプト001

function OnClick(){
    // アクティブタブ以外を閉じる
    var idx = Lunascape.ActiveIndex;
    for(var i=Lunascape.GetCount()-1; i>=0; i--){
        if (i != idx){
            Lunascape.Close(i);
        }
    }
}