2009-07-24 19 views
13

Sto lavorando a un plug-in che, quando TinyMCE è in uso come editor Visual, utilizza i comandi di TinyMCE per inserire il testo nell'area di modifica del contenuto del corpo. Attualmente funziona semplicemente eseguendo il comando. Se funziona, allora TinyMCE è attivo e in caso contrario, ho JS personalizzato per lavorare con l'editor HTML.Modo per verificare se TinyMCE è attivo in WordPress

La mia domanda, tuttavia: esiste un modo per verificare se TinyMCE è attivo o meno invece di eseguire il comando e fallire quando non lo è?

risposta

23

E ... Ho risposto alla domanda per me stesso. Il condizionale si vuole testare per è la seguente:

is_tinyMCE_active = false; 
if (typeof(tinyMCE) != "undefined") { 
    if (tinyMCE.activeEditor == null || tinyMCE.activeEditor.isHidden() != false) { 
    is_tinyMCE_active = true; 
    } 
} 

Il trucco è che tinyMCE.activeEditor restituisce NULL quando TinyMCE non è attivata. Puoi utilizzare il metodo isHidden() per assicurarti che non sia in esecuzione quando sei tornato alla modalità editor HTML.

Questo è scarsamente documentato sul sito Web e nei forum di TinyMCE.

+0

Thaks. Questo ha funzionato bene. :) – Haris

+0

Hm, questo non funziona per me. Per qualche ragione, è vero indipendentemente dal fatto che sia in modalità HTML o in modalità visiva. Qualcun altro ha questo problema? – Shaan

+1

Penso che il mio problema è che il piccolo editor MCE non è stato caricato e sto verificando prima che sia completamente caricato. Come posso aspettare che venga caricato prima di eseguire questo controllo? – Shaan

7

Sì, ho visto che il codice su WordPress: ABSPATH/wp-includes/js/autosave.js presentare

// (bool) is rich editor enabled and active 
var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(); 
2

Come questa domanda ordinati nei motori di ricerca. Penso che dovrei estendere le risposte di Daniels un po 'per supportare quando abbiamo più istanze di editor di parole in una singola pagina.

var is_editor_active = function(editor_id){ 

     if(typeof tinyMCE == 'undefined'){ 
      return false; 
     } 

     if(typeof editor_id == 'undefined'){ 
      editor = tinyMCE.activeEditor; 
     }else{ 
      editor = tinyMCE.EditorManager.get(editor_id); 
     } 

     if(editor == null){ 
      return false; 
     } 

     return !editor.isHidden(); 

    }; 

Utilizza

quando solo è necessario controllare l'editor attiva

if(is_editor_active()){ 
    // do stuff 
} 

Se un editor con certa id necessario da controllare

if(is_editor_active('mycontent'){ 
    // do stuff 
} 

Spero che questo una piccola funzione sarà utile per gli altri :)

Problemi correlati