Home > Latest topics

Latest topics > タブカタログでTab Scopeをパクってみた

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

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

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

タブカタログでTab Scopeをパクってみた - May 06, 2007

第2回拡張機能勉強会でTab Scopeのプロトタイプを見てから、公開されたらぜひタブカタログでこの機能を使わせてもらおうと思っていて、気がついたら公開されてたので早速見てみたんだけども、他の拡張機能とかで機能を利用できるような設計になってなかったので、仕方ないから関係してるコードをコピペしてタブカタログに仕込んでみた。

ただ、画像を含むリンクで画像の前後に改行があったりすると上手くいかなかったので、そこだけ手を加えた。

具体的にはこんな感じにしてある。


getImageInLink : function(aNode) 
{
  var d = aNode.ownerDocument;
  try {
    var xpathResult = d.evaluate(
        'descendant::*[local-name() = "img" or local-name() = "IMG"]',
        aNode,
        d.createNSResolver(this.NSResolver),
        XPathResult.FIRST_ORDERED_NODE_TYPE,
        null
      );
  }
  catch(e) {
    return null;
  }
  return xpathResult.singleNodeValue;
},
NSResolver : { 
  lookupNamespaceURI : function(aPrefix)
  {
    switch (aPrefix)
    {
      case 'xul':
        return 'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul';
      case 'html':
      case 'xhtml':
        return 'http://www.w3.org/1999/xhtml';
      case 'xlink':
        return 'http://www.w3.org/1999/xlink';
      default:
        return '';
    }
  }
},

(中略)

var walker = aWindow.document.createTreeWalker(doc,
                NodeFilter.SHOW_ELEMENT, filter, false);
for (var node = walker.firstChild(); node != null; node = walker.nextNode())
{
  if (
    node.hasChildNodes() &&
    (img = this.getImageInLink(node))
    )
    node = img;
  var box = doc.getBoxObjectFor(node);
  var l = box.screenX;
  var t = box.screenY;
  var r = l + box.width;
  var b = t + box.height;
  if (l <= aScreenX && aScreenX <= r && t <= aScreenY && aScreenY <= b)
    return node;
}

別にXPathでやる必要はないんだけどね……

Tab Scopeに比べて「戻る」も「進む」も「再読み込み」も何も操作のためのUIがなくて、ただリンクを辿ることとスクロールすることしかできないんで、実用性はあんまりないけど、まあ、やってみたかったんですよ。

分類:Mozilla > 拡張機能, , , , , , 時刻:21:46 | Comments/Trackbacks (1) | Edit

Comments/Trackbacks

no title

おっ、パクっていただいて光栄です!今さらながらのノード直下にのノードが存在するとは限らないことに気付きました。

Commented by Gomita at 2007/05/09 (Wed) 23:59:53

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2007-05-06_tabcatalog.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 ブラウザ無料ダウンロード