Sleipnir2で、重複URLのタブを閉じるスクリプト

Sleipnir2でページを新しいタブで開いては、閉じずに使っている。
しばらく経つと画面上部がタブで埋まってくる。
会社だと特にだが、よくみると同じ資料ページを何枚も開いていたりする。
たまに、重複のURLは閉じて、すっきりさせるべきだ。


Sleipnir1.66で動作するスクリプトは落ちてたんだけど、2系列ではうまく動かなかった。
どうもAPIのCloseメソッドの挙動が違う(というかおかしい?)ようだ。


妙な仕様を回避しつつ、2系列でも動くように適当に作ってみた。


//----------------------------
//重複URLを閉じる。
//----------------------------
pnir = new ActiveXObject("Sleipnir.API");

rega = /^http:\/\/\/|^about:/;
tab_len = pnir.GetCount;
url_list = '\n';

//URLリストを作り、含まれていたら消していく。
for (i = 0 ; i < tab_len ; ){
doc = pnir.GetDocumentObject(pnir.GetDocumentID(i));
t_url = (typeof(doc.URL) == 'string') ? doc.URL : '';
//↓アンカー以下を削る。ここをコメントアウトすれば完全一致のURLタブのみ閉じるようになる。
t_url = t_url.replace(/#.*/, '');

if (t_url && !rega.test(t_url) &&
url_list.indexOf('\n' + t_url + '\n') != -1 &&
pnir.IsNavigateLock(pnir.GetDocumentID(i)) == false){
//↓どうもアクティブタブにするなどしないと消えないっぽい。
pnir.ActiveIndex = i;
pnir.Close(pnir.GetDocumentID(pnir.ActiveIndex));
tab_len--;
}
else
{
url_list += t_url + '\n';
i++;
}
}

上記内容を「重複URLを閉じる.js」とかいう名前でテキストファイルとして保存し、
スクリプトスクリプトの整理 で、開いたフォルダに放り込む。
スクリプトスクリプトの再読み込み で再読み込みした後、
スクリプト→重複URLを閉じる で実行。


何が起きても当方は一切責任は負わない。