.Mac
カウンタ徹底カスタマイズ
.Mac の Homepage
のカウンターを徹底カスタマイズする方法を紹介しよう。.Mac
カウンターが大き過ぎるとか、いまいち自分のページに合うカウンターがないとかでお困りの方には朗報かも。
自作サイトに .Mac の Homepage
機能で使用できるカウンターを流用する方法の紹介はもう既に色々なところでされている。この
blog
の前身でも紹介していた。この
blog に .Mac
カウンターを流用するにあたり、Netscape
4.X 対策の ilayer 要素が HTML
の標準にない等の理由で削ったり、整形したりしているうちに、カウンターを上昇させずに現在値を知る方法はないのかしらと思って、カウンター用の
JavaScript
を読みはじめた。すると結構カスタマイズ可能なことが解ってきた。ついでに、自作
JavaScript
とのコンフリクトの可能性もあることがわかった。残念なことに上昇させずに読む方法は見つからなかったが。
せっかく調べたので自分の備忘も兼ねて、ちょっと小難しい前置きに付き合ってもらいたい。
【.Mac
カウンタの動作】
.Mac
カウンタは次の仕組みで動作している。(Netscape
4.X 以外の場合)
- JavaScript でカウンタのための諸元を設定する。
その JavaScript コードはページの HTML に埋め込まれたもので次のようになっている。
counterUser='.Macアカウント';
counterPage='ページ番号';
imageBase='イメージのベースURL';
window.onload=writeCounter;
最後の行は、ページの内容を一通り読み込んだら、カウンターを書き出す動作をしなさいという意味。
- カウント値をインクリメントさせ、Cookie を送る(推測)
http://homepage.mac.com/WebObjects/Counter.woa/wa/image?user=.Macアカウント&page=ページ番号 にアクセスするとカウント値が上昇し、見えないイメージが返される。そしてブラウザにはカウンタ値などが書かれた Cookie が送られる。
- Cookie からカウント値を読み取りカウンタ用 HTML を作り出す
これは、1 の最後の行で指定された JavaScript 関数 writeCounter の内部で実行される JavaScript 関数 counterHTML によるもの。作り出される HTML は JavaScript 変数 imageBase の下の画像を組み合わせたもので次のようになる。
<img src="imageBase/left.gif"/>
<img src="imageBase/N.gif"/>
...
<img src="imageBase/N.gif"/>
<img src="imageBase/right.gif"/>
ここで imageBase は JavaScript 変数として指定された URL で、N はカウント値の一桁一桁の数字である。実際には改行は入らない。
- 3 の HTML を CounterDiv という名前が付いている要素の内容とする。
前出の JavaScript 関数 writeCounter の残りの動作の内容である。これによって、2 で取得された見えない画像部分がカウンターの画像に置き換えられる。
【自作 JavaScript
とのコンフリクトの可能性】
1
のところで述べたように
JavaScript の window
オブジェクトの onload
属性が代入されている。このためもし
window オブジェクトの onload
属性を利用した JavaScript
を自作して埋め込んでも、カウンターを付けるとうまくいかなくなってしまう。
こういう場合は、writeCounter
を内部で動作させるものを自分で作ってそれを
window オブジェクトの onload
属性に入れておくとよいだろう。そのためには
http://homepage.mac.com/i/chp/TKCounter.js
を読み込む script 要素は head
要素の中に移動しておいた方が融通が効く。自分で
JavaScript
コードを作る人ならば、その理由は解ると思う。
【カスタマイズ方法】
いよいよ具体的なカスタマイズ方法だ。
- カウントだけしてカウンターを表示させない
-
カウント値は別なページ(例えばカウンタを利用するためのダミーのページとか)で確認し、自作サイトでは表示させない方法だ。カウンタとして次の HTML コードを埋め込めばよい。
<div id="CounterDiv">
<img src="http://homepage.mac.com/WebObjects/Counter.woa/wa/image?user=.Macアカウント&page=ページ番号" alt="">
</div>
- カウンタの画像を自作のものに置き換える
-
自作の素材として次のファイルを用意しよう。
| ファイル名 |
役割 |
|
ファイル名 |
役割 |
| left.gif |
カウンタの左端 |
0.gif |
数字の 0 |
| 1.gif |
数字の 1 |
2.gif |
数字の 2 |
| 3.gif |
数字の 3 |
4.gif |
数字の 4 |
| 5.gif |
数字の 5 |
6.gif |
数字の 6 |
| 7.gif |
数字の 7 |
8.gif |
数字の 8 |
| 9.gif |
数字の 9 |
right.gif |
カウンタの右端 |
用意したらそれをどこかのフォルダに置く。もちろん参照可能な URL が付けられるフォルダにである。これを仮に http://some.where.com/foo/bar だとしよう。
カウンタ付きページとして次の要領でページを作成しよう。
<head>
...
<script type="text/javascript" src="http://homepage.mac.com/i/chp/TKCounter.js"></script>
<script type="text/javascript">
<!--
counterUser='.Macアカウント';
counterPage='ページ番号';
imageBase='http://some.where.com/foo/bar';
window.onload=writeCounter;
// -->
</script>
</head>
<body>
...
<div id="CounterDiv">
<img src="http://homepage.mac.com/WebObjects/Counter.woa/wa/image?user=.Macアカウント&page=ページ番号" alt="">
</div>
...
</body>
この例では、オリジナルから離れてなるべくお作法に従って書いてみた。http://some.where.com/foo/bar ではなく http://homepage.mac.com/foo/bar ならば imageBase のところに単に /foo/bar とだけ書いてもよい。CounterDiv の id が付いた div 要素に適当に style-sheet を付けたりして表示位置を調節してほしい。
素材の画像を作るのが面倒なときはフリーのカウンタ素材が色々出ているからそれを探して使うといいだろう。
JavaScript
が書ける人は、オリジナルの
JavaScript コードを参考に Cookie
からカウント値を読み取って動作する面白いカウンタを作れるかもしれない。例えば
100
人ごとにお目出度の音楽を鳴らすとか。音付きカウンタなんて見かけないから面白いかも。
最後にカスタマイズしたカウンタの例へのリンクを書いておこう。
http://homepage.mac.com/yuji_okamura/counter/index.html
Posted: 02:03
|
Comment
|
Trackback
以下、類似エントリです。