朝顔日記

続・tab で places

2006-04-03

Firefox 2.0 以降では、ブックマークと履歴が統合した places というものが装備されるのですが、現状の仕様だと、places は独立したウィンドウになっています。で、tab で places でちょっと書いた選んだアイテムを新規タブで開くためのアレコレですが、進展がありましたので続報です。先の記事と重複しますが、そこらあたりはよしなに。

現状 places をタブで開くために、私は以下の URL をブックマークして、Bookmarks Toolbar に配置しています。

  • chrome://browser/content/places/places.xul

これで places をタブで開くことができるのですが、現状の問題点としては、places の右ペインのアイテムを中クリック(ホィールクリック)一発で新規タブで開けないことです。設定でオートスクロールが有効になっている場合に、中クリックした途端にマウスカーソルがオートスクロール用のものになって、タブで開いてくれないのです。オートスクロール用のマウスカーソルになっても左右いずれかにちょっと移動してから続けて中クリックすれば、新規タブで開けるのですがちょっと面倒です。

設定でオートスクロールを切っていれば一発で開けることに気がついたので、オートスクロールをあきらめて使おうかと思っていたんですが、places を開いているときだけオートスクロールを無効にできればいいということを思いつきました。さっそく Piro さんに相談してみたところ、さくっとスクリプトを書いてくれました。ありがとうございます。> Piro さん

ナイトリーを使っている人で、places をタブを開きたい人向けという非常にニッチなアレでナニですが、Piro さんに公開の許可も頂いたのでそのスクリプトを公開しておきます。


(function() {
var updateAutoScrollEnabledForPlaces = function(aTarget) {
aTarget.__defineGetter__('autoscrollEnabled', function() {
  if (this.getAttribute("autoscroll") == "false" ||
      this.currentURI.spec == "chrome://browser/content/places/places.xul")
      return false;
  var enabled = true;
  try {
    enabled = this.mPrefs.getBoolPref("general.autoScroll");
  }
  catch(ex) {
  }
  return enabled;
});
}
updateAutoScrollEnabledForPlaces(gBrowser.mCurrentBrowser);
var originalAddTab = gBrowser.addTab;
gBrowser.addTab = function() {
  var tab = originalAddTab.apply(this, arguments);
  updateAutoScrollEnabledForPlaces(this.getBrowserForTab(tab));
  return tab;
};
})();

Firefox で userChrome な JavaScript を可能にする拡張機能 userChrome.js や Piro さん作の コンテキストメニュー拡張 のカスタムスクリプトとして登録すれば使えると思います。上記スクリプトは、userChrome.js 用ですので、コンテキストメニュー拡張のカスタムスクリプトで使う場合には、一番最初と最後の行を除いた部分を記述すれば OK です。

私自身は、userChrome.js に userChrome.js スレにある Sub-Script Loader のみを記述して、プロファイルの chrome ディレクトリに先のスクリプトを、places_nonautoscroll.uc.js と名付けて配置しています。Sub-Script Loader というのは、chrome ディレクトリにある、*.uc.js というスクリプトを自動的にロードしてくれるスクリプトです。

なお試してみたところ、正式版の Bon Echo a1(Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8) Gecko/20060321 Firefox/2.0a1 - Build ID: 2006032100)では、動作しませんでした。最新ナイトリーな Bon Echo(Mozilla/5.0 (Windows; U; Windows NT 5.0; ja; rv:1.8) Gecko/20060402 Firefox/2.0a1 - Build ID: 2006040203)では動作するのを確認しましたので、a1 な Bon Echo の places と現在の Fx 2.0 なナイトリーのそれとでは仕様が異なるようです。ちなみに私が常用しているのは、trunk のナイトリーです。

いつのまにか、スクリプトの力を借りなくてもタブで開いていた、places の右ペインのアイテムを中クリックすることで新規タブで開けるようになっていました。(2006-04-13T10:27:10+09:00 追記)

「続・tab で places」へコメントをつける

書き込み時の挙動について
URI らしき文字列には自動的にリンクが張られます。また "<" や、">" は実体参照化されます。
スパム対策のため、リファラを切っていると投稿できません。

この記事へのツッコミ

1: くでん (2006-04-04T00:46:42+09:00)
JavaScriptActionsでもこのコードはそのまま使えるみたいです。JavaScriptConsoleにエラーもでません。私は素直にClassic Sidebarsに逃げてますけど。
2: のり (2006-04-04T01:27:44+09:00)
確かに Classic Sidebars で用は足りるんですけどね。ただ、サイドバー開いたらまた閉じるのが面倒なので。:p)
簡易な履歴閲覧用としては、前の Go メニューが好きだったんですけどねぇ。History メニューでも、起動した直後にいくつかの履歴を表示させることは簡単にできると思うんですが…。
誰か腕自慢の人が、拡張作ってくれないかしらん。:p)

トラックバック

1: bushwhacker/Placesがどうも・・・ (2006-04-09T19:22:44+09:00)
Firefox2.0から導入されるPlacesですが、現状の branch ・ trunk ビルドと使いにくい・・・。(新しいものに順応できなくなってきてる?年かな・・・。) ということで朝顔日記 - 続・tab で places経由でnorah'# : Classic Sidebarsというのを発見w あ~やっぱりサイドバー..
この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2006/04/diary_060403a.html