もう既にお気づきかと思われますが (初見の人はワカランだろうけどw)、ハイパーリンクのリンク先 URI がはてなブックマークにてブックマークされている場合に (っていうか動作的にはされてなくてもなんだけど)、ブックマークページへリンクする、ブックマークでの参照数を表す画像を、ハイパーリンクのお尻にしっぽのようにくっつけてしまうスクリプトを書いてみました。
流石ブログだけあってカレンダーメニューだのなんだのやたらとハイパーリンクが多いために微妙に動作が重たくなっておりますが、この辺は改良の過程で動作対象のフィルタリング機能とか追加していく方向で解決することとして、とりあえず「実験中」ということで公開だけしてしまうことにします (^_^; 。
スクリプトを任意のサーバーに up した上で、以下のような HTML 文をどこかしらに書いておけば ok です。
<script type="text/javascript"
src="(upしたサーバーのURI)/hatebutail.js"
charset="UTF-8"></script>
annopop.js、citelabel.js との併用も可能です。但し、これらとセットで使う場合、hatebutail.js は一番最後にロードするようにした方がいいかもしれません(annopop.js より先にロードした場合、annopop.js が処理しなければならない <a> タグの数が無駄に増える分動作が重くなるかもしれません。そして citelabel.js より先にロードした場合、citelabel.js が生成する参照先 URI へのハイパーリンクは「はてブのしっぽ」の処理対象外になってしまいます。)。
(追記: Tue Jan 23 00:19:56 JST 2007) (更に追記&変更: Mon Feb 12 08:04:18 JST 2007) 早速というかやっぱりというかクレームが来ちゃったので (^_^; 、フィルタリングを実装しますた。以下の要領で配列をセットすると、該当する ID やクラス名やタグ名を持つ要素の配下にある <a> タグは、処理の対象外となります。
<script type="text/javascript" src="http://example.com/foo/bar/hatebutail.js" charset="UTF-8"></script> <script type="text/javascript"><!-- Hatebutail.filterId = [ "sidemenu-osusume" ]; // ID Hatebutail.filterClass = [ "calendar", "mod-category", "mod-backno" ]; // クラス名 Hatebutail.filterTagName = [ "h1" ]; // タグ名 //--></script>
更に、以下の要領で配列をセットすると、該当する ID やクラス名やタグ名を持つ要素の配下にある <a> タグのみが処理の対象になります (つまり、それ以外は処理の対象外になります)。
<script type="text/javascript" src="http://example.com/foo/bar/hatebutail.js" charset="UTF-8"></script> <script type="text/javascript"><!-- Hatebutail.targetId = [ "sidemenu-osusume" ]; // ID Hatebutail.targetClass = [ "calendar", "mod-category", "mod-backno" ]; // クラス名 Hatebutail.targetTagName = [ "h1" ]; // タグ名 //--></script>
つか、今気がついたんだけど、 (←結局変えちゃいました)HatebutailOnLoad って、変な名前だね。後で名前変えちゃうかも。(今日はもう寝るけど)
<a> タグの href 属性に書かれた URI は、絶対指定であろうが相対指定であろうが動作対象となります。href 属性が絶対指定の場合、対象となるスキームは http(s) と ftp(s) だけです (mms も加えた方がいい?)。about とか javascript とか mailto とかは対象外です。# で始まる名前) が含まれる場合、#
セコメントをする