<script type="text/javascript" src="CRssFeed.js の URI" charset="UTF-8"></script>
<script type="text/javascript" src="CRCHalo.js の URI" charset="UTF-8"></script>
<script type="text/javascript" src="CRCHalo4iBlog.js の URI" charset="UTF-8"></script>
<script type="text/javascript" src="ブログのベース URICommonLib.js" charset="UTF-8"></script>
<head>
…
<script type="text/javascript" src="CRssFeed.js" charset="UTF-8"></script>
<script type="text/javascript" src="CRCHalo.js" charset="UTF-8"></script>
<script type="text/javascript" src="CRCHalo4iBlog.js" charset="UTF-8"></script>
<script type="text/javascript" src="/myname/iblog/CommonLib.js" charset="UTF-8"></script>
…
</head>
<div id="表示箇所の ID 属性値">JavaScript が無効かエラーが発生しているときの文言</div> を入れる。
<body>
…
<div id="RecentComments">JavaScript が無効か何らかのエラーが発生しています。</div>
…
</body>
<script type="text/javascript"><!--
var CRCHalo4iBlog クラスオブジェクトの変数名 = new CRCHalo4iBlog(
'RSS のパス',
document.getElementByID('表示箇所の ID 属性値'),
true,
'ブログのベース URI'
);
CRCHalo4iBlog クラスオブジェクトの変数名.LoadInterval(true);
// --></script>
<script type="text/javascript"><!--
var RecentComments = new CRCHalo4iBlog(
'/myname/iblog/haloscan.xml',
document.getElementByID('RecentComments'),
true,
'/myname/iblog/'
);
RecentComments.LoadInterval(true);
// --></script>
<noscript>JavaScript が使えないブラウザ用の文言</noscript> を入れる。
<noscript>JavaScript が使用できない場合は直接 <a href="/myname/iblog/haloscan.xml">RSS</a> を参照してください。</noscript>
Web アクセシビリティの指針を示した JIS 規格 X 8341-3 には script タグをサポートしていないウェブブラウザのために、noscript 要素を使ってそこにスクリプト言語があること及び代替手段を利用者に知らせる。
とある。HaloScan によるコメントが単一スレッドの場合はそのスレッドの URL を示せばよいが、大抵の場合スレッド ID は複数あるはずだし、ブログのコメントに使用しているのならばそれは日々増えてゆく。更にコメントは自分で付けるのではなく人が付けるのだからどれが最近のコメントかを予め把握できない。つまり代替手段を予め静的に特定することができないのだ。
ここは涙を飲んで RSS 自身を代替手段として示すしかないだろう。あるいは CacheUpIt のファイル加工機能を利用して RSS を静的な HTML に変換してアップロードし、それへのリンクを代替手段とするという方法もある。
<dl>
<dt><a href="item 要素の link 要素の内容">スレッド ID : 投稿者名</a></dt>
<dd>コメントの内容</dd>
…
</dl>
コメントが一つもないときの文言
<a href="index.html"> から </a> までを a 要素という。href="index.html" の href は属性名、index.html は属性値、a 要素の href 属性の値は index.html ということになる。そして開始タグと終了タグの間の内容は子供要素ということになる。
<dl></dl> と意味のない出力になるのを防ぐための文言。詳細は後述する。
#RecentComments {
font-size: smaller;
}
#RecentComments dd {
padding-left: 0em;
margin-left: 0em;
}
#RecentComments dd {
display: none;
}
#RecentComments dd {
height: 1em;
overflow: hidden;
}
CRssFeedを CRCHalo に読み替えればよい。ここでは CRssFeed クラスのサブクラス(CRssFeed を元に作成した機能とデータの固まり)である CRCHalo で追加されたカスタマイズ可能な事項について説明する。
デフォルトではコメントが一つもないときは「誰かコメントください (T_T)」となっている。これを変えることができる。例えば「まだコメントはありません。」とするならば ステップ 3 の CRCHalo クラスオブジェクトの変数名.LoadInterval(true); という行の直前に次の行を入れればよい。
CRCHalo クラスオブジェクトの変数名.m_NoCommentsMessage = 'まだコメントはありません。';
デフォルトでは :) や ;) などの顔文字を HaloScan が用意しているアイコンに変換するようになっている。HaloScan の設定で顔文字をアイコン化しないように設定しているときは CRCHalo クラスオブジェクトによるコメントの内容の表示でも同じようにアイコン化しないようにした方がよい。その場合はステップ 3 の CRCHalo クラスオブジェクトの変数名.LoadInterval(true); という行の直前に次の行を入れればよい。
CRCHalo クラスオブジェクトの変数名.m_UseFaceIcon = false;
HaloScan では個々のコメントの URL は、そのコメントスレッドの URL の後ろに #NNNN という感じで、スレッド全体のどこかという「アンカー名」が付けられて示される。この NNNN の部分は数字のみになっているが、実はここが数字のみというのは XHTML では間違いで、最初の文字は英字でなければならない。
これは HaloScan のテンプレートをカスタマイズすれば解消可能なのだが、HaloScan コメントの RSS のテンプレートはないので RSS の方まではユーザで補正することができない。このためテンプレートで補正をしている場合 RSS に示された各コメントへの URL をそのまま使用すると、そのコメントへジャンプできずそのコメントが所属するコメントスレッドへのジャンプするだけになってしまう。
そこでテンプレートで HaloScan 側が間違っていることを補正している人向けに NNNN の部分の前に特定の文字列を挿入できるようになっている。例えば NNNN の前に挿入する文字列を「C」指定するときは ステップ 3 の CRCHalo クラスオブジェクトの変数名.LoadInterval(true); という行の直前に次の行を入れればよい。
CRCHalo クラスオブジェクトの変数名.m_AnchorPrefix = 'C';
前に挿入する文字列が指定できるのだから、ついでに後ろに挿入する文字列も指定できるようになっている。後ろの場合は上の m_AnchorPrefix を m_AnchorPostfix に差し替えて指定する。
上記手順で示したコードは HTML 用である。HTML では scirpt 要素で JavaScript を書くとき、その script 要素の内容をコメントにして script 要素を理解しないブラウザに JavaScript コードが表示されてしまうのを防ぐのが通常だ。
しかしながら XHTML で web ページを記述していてなおかつそれが web サーバによってそのページのメディアタイプが application/xhtml+xml、application/xml、text/xml などとされる場合はこの措置はまずい。なぜならば XML では -- したがって XHTML では -- コメントは本当にコメントとして扱われてしまうからだ。このため <!-- --> で囲まれた部分は JavaScript コードではなくコメントとされてしまう。その場合は <!-- --> の代わりに <![CDATA[ ]]> を使えばよい。
しかし、多くの場合は XHTML で書かれた web ページであってもそうする必要は無い。というのは拡張子が html のとき web サーバはそのページのメディアタイプを text/html とする場合が多いからである。少なくとも .Mac の web サーバはそうなっている。