コメントのリアルタイムプレビューをlivedoorBlogで!

こちらの記事にてご要望がありましたので
stroll::blogさんで公開されている「コメントをプレビュー表示」をlivedoorBlog用に設置する方法を解説させて頂きます。

コメントで絵文字機能をと同様にこちらで公開しているスクリプトの権利など諸々はstorllさんに帰属します。

2006.09.02:最近のテンプレートへの対応策と、標準絵文字をプレビューさせる方法を追記しました。

はじめに

基本赤文字部分をコピーして貼り付けていくだけで設置が可能ですが
一度メモ帳などのテキストエディタに個別記事のHTMLテンプレートをコピーし、エディタ側で編集した後
もう一度HTMLテンプレート編集ウィンドウにコピーする形をとったほうが失敗しづらいと思います。
また、引用表示幅が狭い為に自動的に改行されている所がありますのでご注意くださいませ。

では解説はじめます。まず個別記事のHTMLテンプレートの
<td><textarea id="text" name="body" rows="10" cols="50"></textarea></td>
ここに
<td><textarea id="text" name="body" rows="10" cols="50" onkeyup="doCommentPreview()" onblur="doCommentPreview()"></textarea></td>

このように赤文字部分を追加します。

つぎにプレビューを表示する場所を作成します。
<td><textarea id="text" name="body" rows="10" cols="50" onkeyup="doCommentPreview()" onblur="doCommentPreview()"></textarea></td>
</tr>
この下に
<td><textarea id="text" name="body" rows="10" cols="50" onkeyup="doCommentPreview()" onblur="doCommentPreview()"></textarea></td>
</tr>
<tr>
<td valign="top"><label for="coment_preview">プレビュー: </label></td>
<td><div class="comments-body" id="comment_preview" style="padding:0;margin:0;">ご利用のブラウザ、設定ではご利用になれません。</div></td>
</tr>
のように赤文字部分を追加します。
ただし、最近のテンプレートではコメントフォームのテーブルの構造が若干違うようですので、上の当該部分を
<td valign="top" nowrap><label for="coment_preview">プレビュー: </label></td>
<td colspan="3"><div class="comments-body" id="comment_preview" style="padding:0;margin:0;">ご利用のブラウザ、設定ではご利用になれません。</div></td>
このように青文字部分を追加されると良いかと思います。
他にも構造が違うコメントフォームがある事も考えられますので適宜対応してください。

次に表示する為にjavascriptを記述していきます。
</form>
</table>
この下に
</form>
</table>
<script type="text/javascript">
<!--
function doCommentPreview(mode) {
//コメントプレビュー
var textAreaId = 'text'; //textareaのidとあわせてください。
var previewAreaId = 'comment_preview';
var initString = 'ここにコメントのプレビューが表示されます。';

if (!isDoCommentPreview()) return;

if (!getElementCommentPreview(textAreaId) || !getElementCommentPreview(previewAreaId)) {
return;
} else if (null != mode && mode == 'init') {
getElementCommentPreview(previewAreaId).innerHTML = initString;
return;
}

var s = getStringCommentPreview(textAreaId);


if (null == s || '' == s || '<br />' == s) {
s = initString;
}

if (getElementCommentPreview(previewAreaId)) {
getElementCommentPreview(previewAreaId).innerHTML = s;
}
}

function getStringCommentPreview(e) {
var s = '';
s = getElementCommentPreview(e).value;
s = s.split('&').join('&amp;');
s = s.split('<').join('&lt;');
s = s.split('>').join('&gt;');
s = s.split('\'').join('&quot;');
s = s.split('\n').join('<br />');
return s;
}

function getElementCommentPreview(e, f) {
var l = (document.layers) ? 1 : 0;
if(l) {
f=(f) ? f : self;
var a = f.document.layers;
if (a[e]) return a[e];
for (var w = 0; w < a.length;) {
return getElementCommentPreview(e, a[w++]);
}
}
if (document.all) return document.all[e];
return document.getElementById(e);
}

function isDoCommentPreview() {
var ua = navigator.userAgent;
var doNotAgentList = [
ua.indexOf('Opera/6') != -1,
ua.indexOf('Mac') != -1 && ua.indexOf('MSIE 5') != -1
]

for (var i = 0; i < doNotAgentList.length; i++) {
if (doNotAgentList[i]) return false;
}
return true;
}

doCommentPreview('init');
//-->
</script>
この赤文字部分を追加してください。

livedoor Blog標準の絵文字もプレビューさせるには。

livedoor Blogには標準で絵文字がついていますが、コメントに挿入してもこのプレビューには <emoji:sun> などとそのまま表示されてしまいます。
このままだと完璧なプレビューとはいえませんので、これを画像に変換してプレビューにも反映させる方法を紹介します。
※絵文字のプレビューが必要ない方はこの手順は必要ありません。

まず、上記スクリプト部分の
var s = getStringCommentPreview(textAreaId);
この直後に
var s = getStringCommentPreview(textAreaId);
// livedoor Blog標準絵文字用
s = getStringEmojiTag (s);
と入力します。

つづいて
doCommentPreview('init');
この直前に
function getStringEmojiTag (s) {
for (var i = 0; i < emojiList.length; i++) {
var imageUrl = emojiImages[emojiList[i]].src;
s = s.split('&lt;emoji:' + emojiList[i] + '&gt;').join('<img src="' + imageUrl + '" alt="' + emojiList[i] + '" />');
}
return s;
}

doCommentPreview('init');
こちらの赤文字部分を入力します。

ココまで編集が終りましたら、エディタから全て選択してコピーし、個別記事HTMLテンプレートの編集ウィンドウに全て貼り付けて保存してください。
つぎにBlogを再構築するわけですが、エラーが出る可能性もありますのでまず「最新記事」のみを再構築して
ブログのトップページより一番上の記事にアクセスして確認してみてください。

確認して何もエラーが出ないようでしたら最後に「全アーカイブ」で再構築をしてあげて下さい。
以上で設置完了です。


こんな感じで大丈夫かな?>みやきちさん

SpecialThanks stroll::blog様!

livedoor clip Comment

19 Comment

みやきち

みやきち Says...

#1 at April 14, 2005 05:18

無事にできました〜[にこっ]
なんだか、とっても感激です!w
本当にありがとうございました[はあと]

AQ

AQ Says...

#2 at April 14, 2005 11:55

pet Lovers OnlyのAQです。
コメントに絵文字の時にお世話になりました。
今回も、ゲットさせていただきました。
いつもありがとうございますm(_ _)m

cie

cie Says...

#3 at April 15, 2005 22:32

>> みやきちさん
無事設置できたようでよかったですー。

>> AQさん
お久しぶりです。お使いくださってありがとうございます。
それにしてもいつみても犬の絵かわいいですね・・・[ぽっ]

ユヅキママ

ユヅキママ Says...

#4 at April 22, 2005 12:08

初めまして
あったら便利だなぁと思い
以前stroll::blog様のを私も拝見していたのですが
IDのところがイマイチどうしたらいいのかわからず
諦めていました。
わかりやすくて すぐに出来ました!!
ありがとうございました。
これからBlogの方で報告させてくださいね。[ひよこ]

cie

cie Says...

#5 at April 23, 2005 22:18

ユヅキママさんはじめまして。
うまく説明できてたようでよかったですー。[ひよこ]

モダチョキ

モダチョキ Says...

#6 at April 27, 2005 01:12

こんばんは!
こちらの記事を参考にさせて頂きました。
以前はlivedoor Blogにもあったのに、
何故かなくなってしまったので、
今回、思い切ってチャレンジしてみました♪
ありがとうございました!

モダチョキ

モダチョキ Says...

#7 at April 27, 2005 03:31

度々すみません。cieさんにお伺いしたいのですが、
タグをブラウザ上に表示させるのに
どんな方法を使っていらっしゃるのでしょうか。
(タグを枠で囲っていらっしゃいますよね)
私の場合、主に実体文字参照をを使用しているのですが、
最近になって、ブラウザによっては上手く変換されないものがある事に気付きました。
<textarea>の方法だとスクロールバーが出てしまう事と、
<textarea>外の文章に<br>タグを入れないといけないので、
そちらは面倒臭くて、殆ど使っていません。
後、思いつくのは<blockquote>ですが、
これだとタグが実行されてしまうんですよね。
もし宜しければ、お時間のある時にでもご教授頂けませんでしょうか。
宜しくお願い致します!m( _ _ )m

cie

cie Says...

#8 at April 27, 2005 12:49

モダチョキさんこんにちはー。

> タグをブラウザ上に表示させるのにどんな方法を使っていらっしゃるのでしょうか。
わたしも実体文字参照というのを使っておりますですよ。[にこっ]
< は&lt;
> は&gt;
& は&amp;
という風に。他のクオーテーションなどの文字は大丈夫みたいなので使っていません。

> どんな方法を使っていらっしゃるのでしょうか。
このページのソースをご覧になっていただければおわかりになると思いますが、<blockquote>タグを使って囲っています。
<blockquote>タグの中に<と>&を上記の文字に変換しながら貼り付け用ソースを書いています。

> ブラウザによっては上手く変換されないものがある事に気付きました。
確かにモダチョキさんの記事をFirefoxで見ると <が変換されてませんね。
IEだと大丈夫みたいですが、おそらく ;(セミコロン)が抜けているからだと思いますよー。
実行されてしまう原因はこれかもしれません。

モダチョキ

モダチョキ Says...

#9 at April 27, 2005 23:32

早々のご返答ありがとうございます!
ご指摘通り、「;」を付けていませんでした。[汗2]
お聞きしなかったら、ずっと気付かないままでした。(笑)
ずっと前から思っているのですが、
もっと手っ取り早い表示方法があるといいですね。
この度は、本当にありがとうございました♪m( _ _ )m

lovesea

lovesea Says...

#10 at May 15, 2005 08:31

初めまして。。
AQさんの所から何度か飛んできていたんですけど、難しそうだなぁ[ひよこ]とあきらめていたんですが昨日夜中チャレンジしてみました。こちらのプレビューの方はOKなのですが、
絵文字の方が[汗]メールをお送りしました。。アドバイスの方よろしくお願いします。お忙しいのに本当にすみませんですぅ[芽]

cie

cie Says...

#11 at May 16, 2005 10:56

loveseaさんはじめまして。
確認が遅れて何もアドバイスできずゴメンなさい。
とにかく解決されたようでよかったです。[にこっ]

ジャネ子

ジャネ子 Says...

#12 at May 25, 2005 22:05

こんばんは。テンプレや絵文字表示等でいつもお世話になっております。
とてもわかりやすい解説で、[わかば]のわたしでもすぐに出来ました[にこっ]
ありがとうございました!
エントリー違いですが、新作テンプレもとても素敵です!

cie

cie Says...

#13 at May 26, 2005 00:49

ジャネ子さんこんばんは。コメントありがとうございます。[寝]

派手ですが気に入ってます![にこっ]

ましまろ

ましまろ Says...

#14 at August 10, 2006 20:52

コメント欄の絵文字挿入時は、お世話になりました。

今回も、プレビューは、問題の無いようなのですが、プレビューされた,文字の幅が狭く表示されているようなのですが、これを、コメント欄と同じ幅にするにはどうしたらよいのでしょうか?

文字の”プレビュー”と“ここのコメントにプレビューが表示されます”の文章が2列になってしまうのですが、それを一行表示にならないのでしょうか?

cie

cie Says...

#15 at August 11, 2006 10:04

>>14
ましまろさんこんにちは。

少し前後しますが・・・
[strong]> 一行表示にならないのでしょうか?[/strong]
HTMLテンプレートの
[blockquote]<td valign="top"><label for="coment_preview">プレビュー: </label></td>[/blockquote]これを削除して、すぐ下にある
[blockquote]<td><div class="comments-body" id="comment_preview" style="padding:0;margin:0;">[/blockquote]こちらを
[blockquote]<td [color=#C00]colspan="4"[/color]><div class="comments-body" id="comment_preview" style="padding:0;margin:0;">[/blockquote]このように編集してください。

[strong]> これを、コメント欄と同じ幅にするにはどうしたらよいのでしょうか?[/strong]
上の作業でほぼ同じ幅になるかとは思いますが、テーブルの中にありますし完全にコメント表示部と同じというのは少し難しいかもしれません。

あとは
[color=#C00]table.form .comments-body { }[/color]
こちらのセレクタをスタイルシートに追記して、幅(width)などを調整すると良いかと思います。

さおり

さおり Says...

#16 at October 14, 2006 11:48

cieさん、はじめまして。さおりと申します。

こちらのエントリーを参考にさせていただき、
無事にリアルタイムプレビューを表示させることができました。
とても感動しました。ありがとうございます[にこっ]

のちほど私のブログに記事を書かせて頂きます[きらきら]

cie

cie Says...

#17 at October 16, 2006 00:19

>>16
さおりさんはじめまして。
記事でのご紹介、トラックバックありがとうございました。[にこっ]

たけ

たけ Says...

#18 at April 11, 2007 15:36

はじめまして。
偶然こちらのページを見つけることが出来て、とても嬉しく思っています。
livedoorでのお話だったのでしょうが、Movable Typeにも設置することが出来ました。
現在使っているのより軽い感じがします[ぽっ]
ありがとうございます[にこっ]

cie

cie Says...

#19 at April 13, 2007 09:30

>>18
たけさんはじめまして。[にこっ]

プレビューだけじゃなく、Quicktags Plusも使って頂いている様で嬉しいです。
ただ、MTなら普通のHTMLタグが使えますので、本家の[url=http://alexking.org/projects/js-quicktags]JS Quicktags[/url]のほうが良い気もするんですけれども、どうなんでしょうか。

Make a Comment

  • Name と Comment は必須項目です。
  • Gravatar に対応しています。アドレスは表示されませんが title 属性に格納されます。
*
*

3 Trackback

カスタマイズに挑戦!:My Garden - お花ダイスキ!

カスタマイズに挑戦!

#1 at September 16, 2005 01:34

アップし忘れてた中型のギボウシのお写真です。 今日の本題は、カスタマイズ。 Livedoorの仕様が変わってから、かなり苦労していましたが、どうやらようやく落ち着いてきた感じ。 でも・・・ 皆さん、やっぱり重いですか? 投げやりになってしまって、これま....

コメント欄フォームいじってたら大変なことに…:ん〜?( ̄〜 ̄;)

コメント欄フォームいじってたら大変なことに…

#2 at October 08, 2005 17:21

livedoor Blogのコメント欄にURL自動リンク機能をつける コメント欄URL自動リンク機能の高速化 livedoor Blogのコメント欄に引用部強調機能をつける という機能を個別ページに付けようとして、ページがバグってしまって、 戻すことが出来なくなり、 運営記録や初期状....

カスタマイズ/リアルタイムプレビュー:日常のトキメキ

カスタマイズ/リアルタイムプレビュー

#3 at October 14, 2006 12:15

コメント投稿画面にリアルタイムプレビューが表示されるように、個別記事のHTMLを改変しました cieさんコメントのリアルタイムプレビューをlivedoorBlogで!を参考にさせていただきました。ありがとうございます。無事に設置できました SSを置いておきます(・∀・) &nbsp; ...
Trackback URI:
http://trackback.blogsys.jp/livedoor/cie/18868925
About Me
avatar
Name: cie
すべての人々に幸運を!
http://blog.livedoor.jp/cie/
cie.buena.suerte[at]gmail.com
My Profile by iddy
Technorati Profile
Total Visitors: cont
このブログのはてなブックマーク総数
Feed
Subscribe to This Blog Feed
Subscribe with livedoor Reader
Add to Bloglines
Add to MyYhaoo!
Add to Google
Add to gooリーダー
Add to Exciteリーダー
Add to Hatena::RSS
feedburner
Templates
lightcyan
several line
division
pinkish line
flier
4seasons
xmas
clover
cheap paper
oblique
drops
dressy
burberry
border
plain
plastik
ink
rounded
テンプレートのご利用に関して
Category Archives
customize
computer
design
diary,murmur
javascript
liga
moblog
mootools
nature
quicktags
sports
template
tv,movie
web
Monthly Archives
2009
04
05
06
2008
03
04
06
2007
01
02
03
04
08
2006
01
02
03
04
05
06
07
08
09
10
11
12
2005
01
02
03
04
05
06
07
08
09
10
11
12
2004
08
09
10
11
12