最近はほとんどどのサイトにfaviconが置かれるようになりました。Ruby on Railに似せて作られたPHPのアプリケーションフレームワークCakePHPではデフォルトでcakePHPのfaviconが入るようになっていたりします。
サイトのfaviconは、ブラウザのブックマークから目的のサイトを探す時のように、大量にあるリストから自分の探しているものを見つける手がかりになります。ロシアで最大のシェアを誇るサーチエンジンyandexの検索結果にはfaviconが一緒に表示されるようになっています。 yandexで表示されているfaviconのURLはhttp://favicon.yandex.net/favicon/ru.wikipedia.orgという形式になっていて、faviconよりあとの部分を変えればそのURLのfaviconが表示されるようになっていました。が、さすがにロシアローカルのサーチエンジンなので日本のサイトはほとんどfaviconがでてきません。そこでURLを渡すとそのfaviconを返してくれるAPIというのがないのか探してみたらFavicon API (ファビコン) α版というのがありました。
Firefox3にもnsIFaviconServiceというなまえの"URLを渡すとそのfaviconを返してくれる"機能が入っています。これを使ってブラウザのヒストリをfaviconにして表示してみたらおもしろかったりするかなーと思ってやってみました。
というのは文字で書いてある履歴を眺めていてもなかなかわかりませんが、こうしてfaviconにして並べてみると一目瞭然です。
var m="@mozilla.org/";
var c=Components;var cc=c.classes;var ci=c.interfaces;
var hs = cc[m+"browser/nav-history-service;1"].getService(ci.nsINavHistoryService);
var result = hs.executeQuery(hs.getNewQuery(), hs.getNewQueryOptions());
var root = result.root;root.containerOpen = true;
var a = [];
for (var i=0; i < root.childCount; ++i) {
try {
var node = root.getChild(i);
var fs = cc[m+"browser/favicon-service;1"].getService(ci.nsIFaviconService);
var ios = cc[m+'network/io-service;1'].getService(ci.nsIIOService);
var u= ios.newURI(node.uri, null, null);
var favicon = fs.getFaviconForPage( u);
a.push(favicon.spec);
}
catch (ex) { }
}
var cs = cc[m+"browser/nav-history-service;1"].getService(ci.nsINavHistoryService);
cc[m+"widget/clipboardhelper;1"].getService(ci.nsIClipboardHelper).copyString("<"+a.map ( function ( n ) {
return "img src='" + n+ "' width='16' height='16'";
} ).join("/>\\n<")+"/>");
これを実行するとクリップボードにfaviconがたくさん書かれたHTMLがコピーされるのであとは適当なテキストエディタにはってHTMLとして保存したあと、ブラウザで開けばあなたの履歴をfaviconでみることができます。
トラックバック元エントリにこのエントリへのリンクがない場合はトラックバックを受け付けません。
http://labs.gmo.jp/mt/mt-tb.cgi/224
comments