2009-07-24 13 views
13

Pracuję nad wtyczką, która, gdy TinyMCE jest używany jako edytor Visual, używa poleceń TinyMCE do wstawiania tekstu do obszaru edycji treści ciała. Obecnie działa po prostu uruchomieniu polecenia. Jeśli to działa, to TinyMCE jest aktywne, a jeśli nie, to mam niestandardowy JS do pracy z edytorem HTML.Sposób sprawdzania, czy TinyMCE jest aktywny w WordPress

Moje pytanie brzmi jednak: czy jest jakiś sposób sprawdzenia, czy TinyMCE jest aktywne, czy nie, zamiast po prostu uruchamiać polecenie i powodować niepowodzenie, gdy nie jest?

Odpowiedz

23

I ... Odpowiedziałem na to pytanie sam. Warunkowe chcesz przetestować jest następujący:

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

Sztuką jest to, że tinyMCE.activeEditor zwraca null gdy TinyMCE nie jest aktywna. Możesz użyć metody isHidden(), aby upewnić się, że nie zostanie wykonana po przełączeniu z powrotem do trybu edytora HTML.

Jest to słabo udokumentowane na stronie internetowej i forach TinyMCE.

+0

Thaks. To działało dobrze. :) – Haris

+0

Hm to nie działa dla mnie. Z jakiegoś powodu jest to prawda, niezależnie od tego, czy jest w trybie HTML, czy w trybie Visual. Ktoś jeszcze ma ten problem? – Shaan

+1

Myślę, że moim problemem jest to, że edytor tinyMCE nie został załadowany i sprawdzam przed jego pełnym załadowaniem. Jak mogę poczekać, aż zostanie załadowany przed wykonaniem tego sprawdzenia? – Shaan

7

Tak, widziałem ten kod na WordPress: ABSPATH/wp-includes/js/autosave.js złożyć

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

W rankingu w wyszukiwarkach tego pytania. Myślę, że powinienem rozszerzyć odpowiedzi Danielsa na wsparcie, gdy mamy kilka wystąpień edytora Wordpress na jednej stronie.

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

    }; 

Używa

Kiedy tylko trzeba sprawdzić Active Editor

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

Jeśli redaktor z określonym id musiała być sprawdzane

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

Mam nadzieję, że mała funkcja będzie pomocna dla innych :)

Powiązane problemy