classics.

2010/03/07 Sunflickr

faviconがないサイトにfavidenticon.user.js

http://twitter.com/oquno/status/8528797858

そんなわけで、結構前から欲しかったのだけれど、ちょうどいいライブラリ( http://www.moreslowly.jp/products/identicon/ )があったので作ってみた。faviconがあるけどlinkタグで書いてないサイトに対応できないのはどうにかなるのかわからない。

ライブラリ自体のライセンスがよく分からないのと、外部から読み込むのがよく分からなかったので、ライブラリ以外の適当なコードだけ。自分用のだとライブラリごとコピペしてます。

var icon = document.evaluate('//head/link[@rel="shortcut icon"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
if(icon)
    return;
var size = 32;
var domain = encodeURIComponent(document.domain);
domain = domain.replace(/[^0-9a-z]/ig,'');
var domain_id = parseInt(domain, 36);
while(Math.pow(2,32) > domain_id*10)
    domain_id*=10;
while(Math.pow(2,32) < domain_id)
    domain_id/=10;
domain_id = Math.floor(domain_id);
var favicon = document.createElement('link');
var canvas =  document.createElement('canvas');
canvas.width = size;
canvas.height = size;
canvas.id = 'temp_canvas';
canvas.style.display = 'none';
document.body.appendChild(canvas);
favicon.rel = 'shortcut icon';
favicon.id = 'favidenticon';
var head = document.getElementsByTagName('head')[0];
new Identicon(canvas.id, domain_id, size);
favicon.href = canvas.toDataURL();
head.appendChild(favicon);