日記
編集中にパース結果が見えるWikiサンプル Ajax版 (03:19)Edit

なんか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エンジンとかに組み込みやすいんだろうけどさ。

Published At2005-04-08 00:00Updated At2005-04-08 00:00