2009-05-03 2 views
4

Мы пытаемся использовать превосходный редактор WMD/Markdown от Stackoverflow (http://blog.stackoverflow.com/2009/01/updated-wmd-editor/, http://github.com/derobins/wmd/tree/master) по проекту Symfony.Используйте «Обновленный редактор WMD» в текстовых областях, загруженных форматами AJAX

Это отлично работает на текстовых площадках без участия AJAX. Но когда мы должны включить wmd.js, а затем позже на взаимодействие с пользователем (т.е. «нажмите на ссылку») есть текстовое поле, загруженные с помощью AJAX мы совершенно не в состоянии сделать работу ОМП, 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).

Устройство AJAX для Symfony похоже на eval() между метками. Мы попытались включить весь скрипт непосредственно между этими тегами, мы попытались избежать этого и этого, но не имели успеха с ошибками differnt.

На этом этапе мы полагаем, что мы должны включить скрипт в обычную страницу, и после вызова AJAX нам необходимо вручную запустить WMD - какие функции мы должны вызывать? Неужели мы полностью отстаем и вам нужно использовать другой подход?

Спасибо!

ответ

1

drobins fork of wmd on github также решает проблемы AJAX.

+0

проверить мой ответ выше данного –

1

Вы можете использовать мою версию. Просто поместите вызов конструктора, значения конфигурации и вызов метода start() в функцию обратного вызова, которая обрабатывает результаты, полученные из запроса AJAX. My version of mooWMD.

0

У меня была эта же проблема, и я инициализировал ОМУ, как только моя текстовая область была добавлена ​​на страницу асинхронно.

Heres мой код:

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}); 

}