2009-05-03 4 views
4

Nous essayons d'utiliser l'excellent éditeur WMD/Markdown de Stackoverflow (http://blog.stackoverflow.com/2009/01/updated-wmd-editor/, http://github.com/derobins/wmd/tree/master) sur un projet Symfony.Utiliser "Editeur WMD mis à jour" dans les zones de texte chargées par AJAX Forms

Cela fonctionne très bien sur les zones de texte sans AJAX impliqué. Mais quand nous devons inclure wmd.js d'abord, puis plus tard sur l'interaction de l'utilisateur (par exemple « cliquez sur le lien ») ont le textarea chargés via AJAX nous ne parvenons pas tout à fait de rendre le travail des ADM, Firebug nous donne

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) { 

lors du chargement de la page (c'est-à-dire avant le chargement de la zone de texte).

Le chargeur AJAX de Symfony semble évaluer() tout ce qui est entre les étiquettes. Nous avons essayé d'inclure le script entier directement entre ces balises, nous avons essayé d'échapper à ceci et cela, mais nous n'avons pas eu de succès avec des erreurs différentes à venir. À ce stade, nous pensons que nous devons inclure le script dans la page normale et après l'appel AJAX, nous devons lancer WMD manuellement - quelles fonctions devons-nous appeler? Sommes-nous complètement hors de propos et devons utiliser une approche différente?

Merci!

Répondre

1

drobins fork de wmd sur github résout également les problèmes AJAX.

+0

vérifier ma réponse ci-dessus celui-ci –

1

Vous pouvez utiliser ma version. Placez simplement l'appel du constructeur, les valeurs de configuration et l'appel à la méthode start() dans la fonction de rappel qui gère les résultats obtenus à partir de la requête AJAX. My version of mooWMD.

0

J'ai eu ce même problème et j'initialise WMD une fois que ma zone de texte a été ajoutée à la page de manière asynchrone.

Heres mon code:

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

} 
Questions connexes