2013-08-27 13 views
19

W swoim scenariuszu chciałem poczekać, aż CKEDITOR będzie w stanie ready, zanim pozwolę, aby moje własne instrukcje poszły w ich ślady. Więc konsultacji z CKEDITOR API i napisał następujący warunek:Jak odzyskać CKEDITOR.status "gotowy"?

if(CKEDITOR.status == "ready"){ 
//execute my code when ready 
} 

Jednak stan nigdy nie zmienia się od loaded do status. Najwyraźniej nie widziałem żadnego innego stanu.

Bardziej szczegółowe zadanie, chciałem uchwycić moment, w którym CKEDITOR zakończył modyfikowanie zastępczego contenteditable = "true". Właśnie wtedy chcę kontynuować mój kod JS.

Jakieś wskazówki?

+0

nie jestem pewien, że CKEDITOR.status lub „załadowany” praca wydarzenie w CKEditor 4 ponieważ AFAIK system „opóźnione ładowanie” to kolejna część CKEditor który został utracony wraz z wprowadzeniem seria 4.x. I nawet jeśli zadziałały, nie są związane z inicjalizacją edytorów na stronie, musisz użyć detektorów dla każdej instancji, które są wyświetlane w podanych odpowiedziach. – AlfonsoML

Odpowiedz

47

Jeśli chcesz wykonywać swój kod, gdy API jest w pełni załadowany, należy CKEDITOR.loaded zdarzenie:

CKEDITOR.on('loaded', function(evt) { 
    // your stuff here 
}); 

Jeśli chcesz wykonywać swój kod po dowolny nowa instancja jest gotowa użyć CKEDITOR.instanceReady imprezę :

CKEDITOR.on('instanceReady', function(evt) { 
    // your stuff here 
}); 

Jeśli chcesz wykonywać swój kod, gdy szczególności wystąpienie jest gotowy, a następnie użyć CKEDITOR.editor.instanceReady wydarzenie:

CKEDITOR.replace('editor', { 
    on: { 
     instanceReady: function(evt) { 
      // your stuff here 
     } 
    } 
}); 
+1

wskazówka: edytor, dla którego wyzwalacz zdarzenia znajduje się wewnątrz 'evt.editor', oryginalny element wewnątrz' evt.editor.element. $ ' – Markus

7

nie ma ready status w CKEditor, można użyć loaded jak:

if (CKEDITOR.status == 'loaded') { 
    // The API can now be fully used. 
    doSomething(); 
} 

lub użyj instanceReady, jak:

CKEDITOR.on('instanceReady', function(evt){ 
    //ready 
    //do something 
}); 
+0

Tak, są tylko poniższe poniżej, w kolejności sekwencyjnej. Chciałem jednak uchwycić moment, w którym CKEDITOR zakończył modyfikowanie zastępczego contenteditable = "true". Jakakolwiek wskazówka. rozładowane: interfejs API nie został jeszcze załadowany. basic_loaded: podstawowe funkcje API są dostępne. basic_ready: podstawowy interfejs API jest gotowy do załadowania pełnego kodu źródłowego. Załadowany: można w pełni wykorzystać interfejs API. – feder

+1

@feder w takim przypadku możesz użyć "insanceReady" –

1

Jak @Sudhir wskazał, istnieje niewielka różnica pomiędzy bezpośrednia wartość atrybutu i metoda instanceReady.

  • Użyj detektora zdarzeń, jeśli chcesz otrzymywać powiadomienia, gdy CKEDITOR nie tylko zakończył proces ładowania, ale także ukończył cały proces końcowy. W szczególności wymiana i zastrzyk HTML.