2013-07-30 7 views
6

Voglio creare un plugin per l'editor WYSIWYG redactor.js, ma non riesco a trovare il modo di iscriversi ai callback redactor dal mio plugin. Devo usare keydownCallback e autosaveCallback.Sottoscrivi i callback su un plugin per redactor.js

RedactorPlugins.myPlugin = { 
init: function() 
{ 
    //Code 
} 
} 

risposta

4

Io sono andato con la definizione del plug-& utilizzando la richiamata chiamarla; ciò consente di richiamare più funzioni/plug-in dal callback e anche l'approccio previsto.

plugin:

RedactorPlugins.advanced = { 
    your_method: function() { 
     // Add code here… 
    } 
} 

your_method() è ora disponibile per l'oggetto redactor & semplicemente richiamabile attraverso il sottostante:

chiamata Redactor:

$('#redactor').redactor({ 
    keydownCallback: function() { 
     this.your_method(); 

     // Additional keyDownCallbacks: 
     this.another_method(); 
     this.yet_another_method(); 
    } 
}); 

Risposta originale:

So che è tardi, ma mi sono imbattuto in questa sera.

questo ha funzionato per me:

RedactorPlugins.advanced = { 
    init: function() { 
     this.opts.keydownCallback = function(e) { 
      // Add code here… 
     } 
    } 
} 

Si chiama semplicemente le opzioni e aggiunge la keyDownCallback. L'unico problema è che può essere aggiunto solo da un plugin (poiché l'ultimo su chiamato sovrascrive sempre il precedente).

2

Ottima idea con questo.opts nella risposta originale di roj. Dovrebbe essere possibile per preservare la vecchia funzione di callback come questo:

RedactorPlugins.advanced = { 
    init: function() { 
     var oldKeydownCallback = this.opts.keydownCallback; 

     this.opts.keydownCallback = function(e) { 
      // Add code here… 

      if (oldKeydownCallback) 
       oldKeydownCallback(); 
     } 
    } 
} 

Spiegazione: riferimento al vecchio richiamata viene conservato in oldKeydownCallback che viene poi incluso nella chiusura e disponibili all'interno della propria richiamata, quindi si può solo chiamalo una volta che la tua funzione di callback ha terminato di eseguire il proprio codice.