2005-04-08 [長年日記]
_ 編集中にパース結果が見えるWikiサンプル Ajax版 (03:19)
なんかAjaxの方がキャッチーらしいんで、(俺的には)意味のないAjax版を作ってみた。JavaScriptのソースはまあ見たとおり、単にJavaScriptでパース処理をする代わりに、XMLHttpRequestで元テキストを渡して、非同期で返された結果HTMLをInnerHTMLに埋め込んでやるだけ。
もちろんAjaxでもJavaScriptパーサーを使う場合でも、OnChangeとかOnKeyPressとかでパースを呼ぶことは可能だけど、負荷を考えるとそこまでやらない方がいいよね。ただ、OnKeyPressで改行キーが押されたときはその場でパースを呼び出した方が、編集していて気持ちがいいかもしれない。
呼び出されているPHPの方のコード(parse.php)は、PHP版のWikiParserを使って、
<?php
require_once 'WikiParser.php';
$parser =& new WikiParser(array(
'heading_depth' => 3,
'paragraph_oriented' => TRUE,
'disable_plugins' => array('html'),
));
$body = $_POST['body'];
$html = $parser->parse($body);
header('content-type: text/plain; charset=UTF-8');
echo $html;
?>
って感じ。
でもどう考えてもこういう用途ではAjaxを使わなくてすむならば使わない方がいいよなー。サーバー負荷がかからないし、XMLHTTPRequestを使わず純粋に文字列操作だけのパース処理をJavaScriptで書いた方がクロスブラウザ性も高いし(Ajax版はOpera8でも動かない)。
まあ汎用的なサンプルコードとしては、Ajax版の方が他のWikiエンジンとかに組み込みやすいんだろうけどさ。
[TrackBack URL: http://tdiary.ishinao.net/tb.rb/20050408]



あ、いや、パースの結果でなくて"プレビュー"が更新されるものと思ってたんです。つまり、全然ちゃんと読んでなかっただけです。
うわ!すみません。そうなってますね。
いや、最近意味のないAjaxマンセー的風潮がちらほら見受けられるんで、ちょっとつっこんでおきたかったんです。確かにAjaxは使える技術だけど、Ajaxの何がうれしいのかをちゃんと認識してからマンセーしようよ、と。