Firefox 3.1 Beta 1 をインストールしたのはいいんだが・・・

  • 検索ボックスから検索してもなにも起こらない!
  • Highlight all が効かない!
  • FireGesture でタブを閉じるをするとタブが1枚の場合はブラウザ毎落ちちゃう!

上二つは厳しいなぁ・・・βといえど・・・αは問題なかったし。三つ目は仕様変更とかいう記事をどこかで見た気がするんだけど忘れた。でも、これは安易にタブを連続で消しまくれないので直したくてスクリプトを書いてみた。

FireGesture のオプションで登録

if(gBrowser.browsers.length != 1) {
  gBrowser.removeCurrentTab();
}
else {
  gBrowser.getBrowserAtIndex(0).loadURI("about:blank");
}

タブが複数あるときはカレントのタブを閉じて、無い時は about:blank を表示する単純なスクリプト

で、OKと思ったら甘かった。新規にページを開いた時に新しいタブ開いちゃう。残ったタブに読み込んでくれない orz
しかも right_click_close でタブ閉じた時も同様にブラウザ毎閉じられちゃうなぁ・・・これは嫌すぎる。

成功したので追記!

新しいタブで起動しちゃうのは、単純に load しちゃうと歴が残ったままになるのが原因じゃないかなぁと思って試してみたらできた!

if(gBrowser.browsers.length != 1) {
  gBrowser.removeCurrentTab();
}
else {
  gBrowser.getBrowserAtIndex(0).loadURIWithFlags(null, 128);
}

この 128 という値は

引数に指定した読み込みフラグ(flags) および与えられたリファラ(referrer)、文字セット(charset)、POST データで URL を document に読み込みます。reloadWithFlags メソッドで許可されたフラグに加え、次のフラグも有効です。

* LOAD_FLAGS_IS_REFRESH: このフラグは、meta タグの refresh や redirect によって URL が読み込まれたときに使用されます。
* LOAD_FLAGS_IS_LINK: このフラグは、ユーザがリンクをクリックして URL が読み込まれたときに使用されます。これに応じて HTTP Referer ヘッダが設定されます。
* LOAD_FLAGS_BYPASS_HISTORY: URL をセッション履歴に追加しません。
* LOAD_FLAGS_REPLACE_HISTORY: セッション履歴内の現在の URL を新しいものと置き換えます。このフラグはリダイレクトに使用されます。

loadURIWithFlags

この中の LOAD_FLAGS_REPLACE_HISTORY を使ったんだけど、値の取り方が分からなくてググったら 128 ってのがヒットしたのでそのまま使った(;´Д`)
right_click_close にも導入するかな。

やっぱ成功してなかったので追記

ページを開いてリンクで移動した後だと、最後の歴しか上書きされないっぽ・・・。単純に空タブを新規追加して、その後に開いてたタブを閉じるようにした。

if(gBrowser.browsers.length != 1) {
  gBrowser.removeCurrentTab();
}
else {
  var tab = gBrowser.getBrowserAtIndex(0);
  gBrowser.addTab(null);
  gBrowser.removeTab(tab);
}

今度こそ大丈夫っぽいが・・・。