Home > Latest topics

Latest topics > ツリー型タブとVimperatorが衝突する

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

ツリー型タブとVimperatorが衝突する - Apr 14, 2009

という報告を受けて調べてみて、解決策が見えなくて頭を抱えてる。

原因はFirefox 3以降でタブの拡張性が深刻なまでに低下したことに起因している。現在、Firefox 3でタブの中に独自の要素(ツリー型タブの「ツリーの開閉状態を示すアイコン」「折り畳まれたタブの数を表示するラベル」など)を追加しようとすると、バインディングを上書きしてやらないといけない。でも複数のアドオンでバインディングを上書き上書きとやってると、最後にバインディングを適用した誰かの物だけが生き残って、他のアドオンが追加したバインディングは全滅してしまう。今回の問題も、ツリー型タブがFirefox自身の提供するバインディングを上書きした後から、Vimperatorがさらにバインディングを上書きしているために、タブの要素構造がツリー型タブが想定する構造から変化して、初期化に失敗するようになってしまっている。

ツリー型タブマルチプルタブハンドラ情報化タブの3つを開発するにあたっては、この問題に対処するために、以下のような方針をとることにした。

  • それぞれが別個にバインディングを適用したら、お互いに主導権の奪い合いになる。
    • だから、適用するバインディングは「タブの中に要素を追加できる状態」を整えるためだけの物にする(三者でそれを共有する)。
      • その時の「タブの中に要素を追加できる状態」は、Firefox 2以前のバインディングと互換性がある物にする。
  • タブの中への要素の追加は、タブが追加された時のTabOpenイベントを拾って、スクリプトで動的に行う。

これを実現するために作ったのがこちらのライブラリ。3つのファイルで構成されてる。

3つを同じ所に置いてXULファイルだけをオーバーレイで読み込ませると、バインディングを上書きする。他のアドオンで同じライブラリが読み込まれてる時は、最新の物が使われる。

これをVimperatorの作者の人にも使ってもらえればいいんだけど……誰にコンタクトすればいいか分からないし、そもそも向こうにはわざわざこれを使う動機がない。Vimperatorユーザは基本的にVimperatorのカスタマイズですべてを解決する傾向にあるようだから、他のアドオンとの互換性が低くても問題にならないだろうし。

ていうか僕自身Vimperator使ってないから、わざわざ上記のような交渉をしようというモチベーションがない。というわけで、上に名前が出てる3つのアドオンのどれかとVimperatorとを共存させたいVimperatorユーザの人は、自分で作者にコンタクト取ってください。(丸投げ)

分類:Mozilla > 拡張機能 > treestyletab, , , , , , 時刻:12:01 | Comments/Trackbacks (5) | Edit

Comments/Trackbacks

no title

実は既に本家に伝わっています。
#201 (Tree Style Tab extension view is not hierarchical) – vimperator labs
http://vimperator.org/trac/ticket/201

tracのコメントにありますが、vimpeator側のコマンドでCSSを切ると動くようになるよってのが今のところの解決策になってますね。

Commented by teramako at 2009/04/14 (Tue) 15:21:25

no title

すみません、最後まで読まずにコメントしてました。
一応コミット権を持っているので、ちょっとやってみます。リジェクトされるかもしれませんが....

Commented by teramako at 2009/04/14 (Tue) 15:44:55

404

tabFx2Compatible.js ではなく tabFx2Compatible.xml なのでわ?

Commented by 池田 at 2009/04/14 (Tue) 16:08:01

no title

>一応コミット権を持っているので、ちょっとやってみます。リジェクトされるかもしれませんが....
期待age!
次のエントリにも書く予定ですが、このライブラリを使うことには以下の意義があると思ってます。
* Firefox 2互換なので、Firefox 2のタブ構造を期待しているアドオンに対して高い互換性がある。(これ以外の構造だと、結局は他のアドオンに、これのための対応を強いることになる)
* スクリプトの処理で任意の内容を後から付け加える方式なので、バインディングを総取っ替えする方式に比べて、衝突しにくい・衝突をフレキシブルに回避できる余地がある。(バインディング置き換えだけで回避しようと思うと、衝突するアドオンの数だけバインディングを用意しないといけない)
多数のアドオンをユーザが自由に組み合わせて利用すること、を前提にした配慮をすることが、結果的にはユーザの利益に繋がるはず。という思想なので、そこを受け入れてもらえたらなあ、と。

>tabFx2Compatible.js ではなく tabFx2Compatible.xml なのでわ?
恥ずかしいミスをやらかしてしまいましたorz

Commented by Piro at 2009/04/14 (Tue) 16:16:41

no title

ツリー型タブとVimperatorを併用しているので同じく期待age!!

teramakoさんの言っている内容が全てですが,蛇足を書いておきます(^-^;)
Vimperatorのタブへのbindingはタブに番号振るのが主な目的っぽいので,以前はVimperatorからbinding部分のソースを削って使っていました.Vimperatorのtrunkではオプションで番号を振らないようにするとbindingも切られるので,設定次第で共存可,という感じです.どのみち完全には解決していないので,根本的な解決に至ると私は非常に嬉しいです!

Commented by tsukkee at 2009/04/14 (Tue) 18:48:58

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2009-04-14_vimperator.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード