宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
第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がなくて、ただリンクを辿ることとスクロールすることしかできないんで、実用性はあんまりないけど、まあ、やってみたかったんですよ。
おっ、パクっていただいて光栄です!今さらながらのノード直下にのノードが存在するとは限らないことに気付きました。
の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2007-05-06_tabcatalog.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.