2009-07-24 6 views
13

Je travaille sur un plugin qui, lorsque TinyMCE est utilisé comme éditeur visuel, utilise les commandes TinyMCE pour insérer du texte dans la zone d'édition de contenu du corps. Actuellement, cela fonctionne simplement en exécutant la commande. Si cela fonctionne, alors TinyMCE est actif et sinon, j'ai JS personnalisé pour travailler avec l'éditeur HTML.Façon de vérifier si TinyMCE est actif dans WordPress

Ma question, cependant: est-il possible de vérifier si TinyMCE est actif ou non au lieu de simplement lancer la commande et de la faire échouer quand elle ne l'est pas?

Répondre

23

Et ... j'ai répondu à la question pour moi-même. La condition que vous voulez tester est la suivante:

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

L'astuce est que tinyMCE.activeEditor renvoie la valeur null lorsque TinyMCE n'est pas activée. Vous pouvez utiliser la méthode isHidden() pour vous assurer qu'il n'est pas en cours d'exécution lorsque vous êtes revenu en mode éditeur HTML.

Ceci est peu documenté sur le site Web et les forums de TinyMCE.

+0

Thaks. Cela a bien fonctionné. :) – Haris

+0

Hm cela ne fonctionne pas pour moi. Pour une raison quelconque, c'est vrai, que ce soit en mode HTML ou en mode Visual. Quelqu'un d'autre a-t-il ce problème? – Shaan

+1

Je pense que mon problème est que l'éditeur tinyMCE n'a pas chargé et je vérifie avant son plein chargé. Comment puis-je attendre jusqu'à ce qu'il soit chargé avant de faire cette vérification? – Shaan

7

Oui, j'ai vu ce code sur wordpress: abspath/wp-includes/js/fichier autosave.js

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

Comme cette question classé dans les moteurs de recherche. Je pense que je devrais étendre un peu les réponses de Daniels lorsque nous avons plusieurs instances d'éditeur de wordpress sur une seule page.

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

    }; 

Utilise

Lorsque vous avez seulement besoin de vérifier l'éditeur actif

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

Si un éditeur avec certains id nécessaire à vérifier

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

J'espère que cette petite fonction sera utile aux autres :)

Questions connexes