指定した URL からそのサイトのファビコンを表示する jQuery Favicon プラグイン
指定した URL からそのサイトの favicon (ファビコン) を表示する jQuery プラグインです。サイトによって favicon があったりなかったりしますが、jQuery Favicon プラグインは favicon が見つかったときだけ表示するようにしています。
http:// からはじまる任意の URL を指定できます。その URL からプロトコルとホスト名を切り出して favicon.ico の URL を組み立てます。ですので、相対パスは対応していません。
Favicon Plugin は img タグを操作することを前提としています。favicon.ico の URL を設定し、そのサイズを 16 × 16 としています。
はじめは非表示としておき favicon のロードが完了したとき表示するようにしています。これで favicon のないサイトは img タグが [×] などにならずに済みます。
イベントのハンドリングは jQuery の one メソッドを使っています。one メソッドを使うと onload イベントの発生後、そのイベントハンドラを解除してくれます。bind メソッドの1度きり版ですね。
ダウンロード
jquery.favicon.js (Uncompressed only)
(function($) { // favicon $.fn.favicon = function(url) { var self = this; var dir = url.split('/').splice(0, 3).join('/'); // http://example.com/foo.html -> http://example.com self.hide(); self.attr('width', 16); self.attr('height', 16); self.attr('src', dir + '/favicon.ico'); self.one('load', function() { self.show(); }); return self; }; })(jQuery); // function($)
使い方
次の例のように、このプラグインは img タグを操作します。favicon メソッドに URL を指定すると http://weather.goo.ne.jp/favicon.ico を表示します。
<div id="r1"></div> <script type="text/javascript"> //<![CDATA[ jQuery(function($) { $('<img />') .favicon('http://weather.goo.ne.jp/area/4410.html') .appendTo('#r1'); }); //]]> </script>
次の例は HTML ページの全 a タグを探し、その a タグのリンク先の favicon を表示しています。favicon は insertBefore メソッドを使って a タグの直前に追加しています。
<script type="text/javascript"> //<![CDATA[ jQuery(function($) { $('a').each(function(i, n) { $('<img />') .favicon(n.href) .insertBefore(n); }); }); //]]> </script>
jQuery Favicon プラグインは jQuery の振る舞いを理解する目的で作成したものですが、特定の場面でニーズがあるかもしれませんので公開します。ライセンスは jQuery と同じにしておきます。
関連情報
- fixedUI プラグイン
- jTemplates
- Cycle Plugin
- Flash Plugin
- tablesorter
- Interface Elements
-
- Interface Elements の Carousel とフォートラベル API で旅行写真の 3D ギャラリーを作る
- Interface Elements の Imagebox とフォートラベル API で旅行写真のギャラリーを作る
- Interface Elements の Slider で郵便番号を入力してみたが・・・
- Interface Elements の Slider で旅行写真を拡大(または縮小)表示する
- Interface Elements の Tooltips をいろいろな要素で使ってみた
- Interface Elements の Scrollto でページ内リンクをスムースにする
- Interface Elements の Carousel と YouTube Data API で動画のサムネイルを回転表示する
- Selectors
- Events
- DOM Manipulation
- AJAX
- Forms with Functions
- Using with Other Libraries
- Books
- Resources