4

Stackoverflowの優れたWMD/Markdownエディターを使用しようとしていますhttp://blog.stackoverflow.com/2009/01/updated-wmd-editor/、http://github.com/derobins/wmd/tree/master) Symfonyプロジェクトで。

これは、AJAXを使用せずにテキストエリアでうまく機能します。しかし、最初にwmd.jsをインクルードし、後でユーザーインタラクション(つまり「リンクをクリック」)でテキストエリアをAJAX経由でロードする必要がある場合、WMDを完全に機能させることができず、Firebugが提供してくれます。

elem is null

addEvent()()wmd.js (Linie 110)
setupEvents()()wmd.js (Linie 1790)
init()()wmd.js (Linie 1970)
previewManager()()wmd.js (Linie 1987)
loadListener()()wmd.js (Linie 1763)

[Break on this error] if (elem.attachEvent) {

ページの読み込み時(つまり、textareaの読み込み前)。

SymfonyのAJAXローダーはタグ間のすべてをeval()しているようです。スクリプト全体をこれらのタグの間に直接含めようとしました。これとあれをエスケープしようとしましたが、異なるエラーが発生して成功しませんでした。

この時点で、通常のページにスクリプトを含める必要があり、AJAX呼び出しの後に、手動でWMDを開始する必要があると考えています。どの関数を呼び出す必要がありますか?私たちは完全に軌道に乗っておらず、別のアプローチを使用する必要がありますか?

ありがとうございました!

4

3 に答える 3

1

githubの wmd の drobins フォークは、AJAX の問題も解決しています。

于 2009-07-06T10:52:21.657 に答える
0

これと同じ問題があり、テキストエリアがページに非同期的に追加されたら、WMD を初期化します。

私のコードは次のとおりです。

function loadTextEditor()
{
    var instances = [];

    if (!Attacklab || !Attacklab.wmd) {
                alert("WMD hasn't finished loading!");
                return;
            }
    /***** build the preview manager *****/
    var textArea = document.getElementById('postcontent');
    var previewPane = document.getElementById('postPreview');

    var panes = {input:textArea, preview:previewPane, output:null};
    var previewManager = new Attacklab.wmd.previewManager(panes);

    /***** build the editor and tell it to refresh the preview after commands *****/
    var editor = new Attacklab.wmd.editor(textArea,previewManager.refresh);

    // save everything so we can destroy it all later
    instances.push({ta:textarea, div:previewDiv, ed:editor, pm:previewManager});

}
于 2009-09-24T20:49:53.080 に答える