HaloScanComments.jsHaloScanComments.js とは2009 年でコメントサービスの HaloScan が終了しました。JS-Kit ECHO に移行しなかった人は、取り敢えず HaloScan からコメントデータのエクスポートをしたことと思います。しかし、エクスポートしてできた XML ファイルをインポートできる別なコメントサービスが見つからず困っていませんか? インポートしなくてよいのならサービスは直ぐに見つかると思います。でもそれでは過去のコメントは無くなってしまったも同然です。
そこで iBlog や Thingamablog のようなサーバサイドに何も要求しないブログアプリケーションでも JavaScript で過去のコメントを表示しようというのが HaloScanComments.js です。
HaloScanComments.js は二種類の表示形式をサポートしています。一つはポップアップ表示でもう一つはインライン表示です。
HaloScan の昔ながらの取り付け方でコメントページへのリンクを付与した場合を再現する表示方法です。Comments(4) のような文言でリンクを表示し、それをクリックするとコメントページがポップアップウィンドウで表示されるものです。
比較的後になってから可能になったインラインでコメントを表示する場合を再現する表示方法です。寄せられたコメントがそのページ内に展開されます。
HaloScan がサポートしていた Gravatar によるアバターを表示できます。HaloScan の設定にあったアバター画像のサイズやレート指定もできます。
HaloScan からダウンロードしたデータには各コメントの投稿者のメールアドレスと IP アドレスが記載されています。しかしこれらを公開状態にするのはよくありません。そこで、投稿者のメールアドレスと IP アドレスが全く含まれない一般用と、それらが含まれている管理者用の二種類を使い分けられるようになっています。
iBlog の JavaScript はエントリ数が多くなるとそれだけサイトのページが重くなりますが、HaloScanComments.js はエントリに相当するコメントスレッドの数がどんなに多くても重くなりません。それは各コメントスレッドのデータがファイルとして独立していて、HaloScanComments.js は必要なファイルしかロードしないからです。このため閲覧者のブラウザだけでなくサーバにも必要最小限の負荷しかかけません。
一つのコメントスレッドに大量のコメントが入っているとさすがに重くなりますが、200 コメントでもアバター画像の表示も含めて私の手許のブラウザでは 1 秒程度です。
HaloScanComments.js を使用して過去のコメントを表示するサイトを作るための準備に以下のものが必要です。
あるいは「HaloScan コメントを一気にダウンロードするコマンド(β版)」によって HaloScan 互換の形式で出力した xml ファイルでもよいです。
XML::Parser が使用できる Perl 実行環境。
上の xml ファイルを HaloScanComments.js が使用する json ファイルに変換するために必要です。もちろん変換するコマンドは用意してあります。
web サーバにあなたがファイルをアップロードできること以外特に必要なものはありません。web サーバではなくローカルに置いても動作します。
JavaScript をサポートしている以外は web ブラウザに必要なものはありません。
comments/HaloScanComments.js「JSON U+2028, U+2029 問題回避方法」を jQuery のバージョンに依存しない方法で反映するための条件を整理した。バグがあったわけではない。
jQuery のバージョン判定を二回していたのを一回にまとめた。
comments/HaloScanComments.js「JSON U+2028, U+2029 問題回避方法」を jQuery のバージョンに依存しない方法で反映した。
jQuery のバージョンに応じて動作するようにし、最新の jQuery と古い jQuery の両方をサポートするようにした。
comments/index.htmljQuery 1.4.1 を使用するようにした。これに合わせてドキュメントの記載も更新した。
caif2json.html
caif2json.pl の修正に伴い、当ページへのリンクが間違っていたのを修正。
caif2json.plPOD に記載された当ページへのリンクが間違っていたのを修正。
comments/index.html
index.css に対する link 要素で type 属性によって MIME タイプを明示。
comments/index.jsQuery String の id パラメータが %-escape されていた場合に対応。