前々から 「あると便利」 と思っていたものの 1 つ.
これも既にいろんな人によって作成されているんだけども,なーんか こう,(例えばソースコード上の) 些細な点が気に食わないってだけで,自分で書き直してしまうんだよなぁ.たぶん,その他人のソースを見なければ,そんな気を起こすことなく そのまま流用して幸せになれるんだろうけど,今回の場合は いかんせん "スクリプト言語" だもんなぁ.
/*
previewComment.js
コメントプレビュー スクリプト
(C) 2005 Yoshinori IIHOSHI.
Created : 2005/03/05 (Sat)
Last Modified : 2005/03/05 (Sat)
*/
function previewComment()
{
var strInit = "ここにコメントのプレビューが表示されます。"
var eDescription = document.getElementById("description");
var ePreview = document.getElementById("preview");
if (!eDescription || !ePreview) {
return false;
}
var strComment = eDescription.value;
strComment = strComment.replace(/&/g, "&");
strComment = strComment.replace(/</g, "<");
strComment = strComment.replace(/>/g, ">");
strComment = strComment.replace(/\"/g, """);
strComment = strComment.replace(/\n/g, "<br />");
ePreview.innerHTML = (strComment != "") ? strComment : strInit;
return true;
}
実際に使うには,プレビュー機能を付加したい HTML ドキュメント (当然 投稿フォームが存在するはず) を次のように編集する必要がある.
- この JavaScript ファイルを指定する script 要素を追加する
- (body 要素などの) onload 属性にこの関数を指定する
- プレビューの対象に対応する要素 (ほとんどの場合 textarea 要素だろう) の id 属性の値を "description" とする
また,この要素の onblur 属性にこの関数を指定する - プレビューを表示するための要素 (div 要素でも何でも) を追加し,その id 属性の値を "preview" とする
また,この要素のスタイル (style 属性とか 外部 CSS + class 属性とか) を 投稿後に適用されるスタイルに合わせる
こーすると,コメントなどを投稿する前に 該当フォームからフォーカスを外せば,プレビューが表示されるというわけ.もちろん,「入力してはフォーカスを外し…」 を繰り返せば 何度も確認できる.
あー疲れた.ここまで詳細に書かなくても良かったよーな.「この Weblog のソース見ろ」+「実際にコメント投稿欄で試してみろ」 で済む話だし.