0

マークアップ言語としてテキスタイルを使用して、 django Web サイト用のライブ プレビューコンテナー (stackoverflow や Reddit など)を作成する必要があります。

ライブ プレビュー - Reddit

クライアント側でそれを行う方法はありますか?(ajaxを使わずに?)

ビューからのコードの解析は次のように簡単です。

{% load markup %}
{{ theme.content|textile }}

(言うまでもなく、ドキュメントに従って設定に含め'django.contrib.markup'ましたINSTALLED_APPS。)

簡単にするために、IE のサポートは必要ないと仮定します。私のJSは次のようになります。

function change_preview() {
    var fragment = document.createDocumentFragment();
    // I am no sure what should I put here:
    fragment.appendChild(document.createTextNode('{{ theme.content|textile }}'))
    document.getElementById("preview").appendChild(fragment);
}

window.onload = function() {
    var content_box = document.getElementById('id_content');
    content_box.addEventListener("input", change_preview , false );
}

そしてHTML:

<textarea id="id_content" rows="10" cols="40" name="content"></textarea>
<div id = "preview"></div>

また、このJSライブラリを見つけました。サーバー側のPyTextileと一緒にクライアント側で使用するのは良い考えですか?

ベストプラクティスは何ですか?

jQuery 以外のソリューションを探していますが、他に方法がない場合は受け入れます。

前もって感謝します。

4

1 に答える 1

1

テキスタイルは、どのマークアップがどの html に対応するかを指定するので、JS ライブラリと Py ライブラリの間に非互換性が生じる大きな可能性はないと思います。

即時プレビュー更新のスクリプトでは、keyupイベントの代わりにイベントを使用することをお勧めします。これは、イベントがフォーカスを失っinputたときにのみ発生するためです。textarea

window.onload = function() {
    var content_box = document.getElementById('id_content');
    content_box.addEventListener("keyup", change_preview , false );
}

jQuery に基づいていない Ben Daglish の lib を使用するには、イベント ハンドラーは次のようになります。

function change_preview() {
    var content_box = document.getElementById('id_content');
    var html = convert(content_box.value);
    document.getElementById('preview').innerHTML=html;
}
于 2012-06-24T22:07:18.793 に答える