webentwicklung-frage-antwort-db.com.de

CKEditor getEditor () Fehler, Wie kann ich es reparieren?

<textarea cols="50" id="txt" contenteditable="true" name="editor1" runat="server" rows="10"></textarea>
<script type="text/javascript" src="css-js/ckeditor.js"></script>
<script type="text/javascript">
  CKEDITOR.replace('txt', {                    
  });       
</script>

Ich bekomme diesen Fehler auf js:

TypeError: Methode 'getEditor' von undefined kann nicht aufgerufen werden

12
Bip

Vor allem ist das contenteditable="true"-Tag in Ihrem Fall völlig ungültig und veraltet. Dieses Attribut ist nur für Inline-Instanzen relevant und da <textarea> nicht (inhaltlich) editierbar ist, brauchen Sie es nicht .

Jedenfalls (selbst wenn fehlerhaft) funktioniert Ihr Code für mich wie ein Zauber ( Geige ). Als ein Wort der Erklärung wird der Fehler, den Sie sehen, erzeugt, wenn kein Element einer id an CKEDITOR.replace() übergeben wird, d. H.

<textarea id="foo"></textarea>
<script type="text/javascript">
     CKEDITOR.replace( 'bar' ); // <textarea> is #foo, error will be thrown
</script>

Stellen Sie sicher, dass Ihr DOM gültig ist und <textarea> vorhanden ist, wenn CKEDITOR.replace aufgerufen wird (async arbeitet?).

15
oleq

Benutzen

CKEDITOR.appendTo( 'txt' ); for DOM elements

CKEDITOR.replace( 'textarea' ); for textarea

Ok, Kumpel, probier das auch

die Funktionen appendTo und replace befinden sich alle in der Datei themedui.js

versuchen Sie es separat hinzuzufügen, hier ist der Link

http://docs.ckeditor.com/source/ckeditor.html#CKEDITOR

3
jayadevkv

Das Problem kann enthalten sein:

<script src="{{ asset('js/app.js') }}" defer></script>

Versuchen Sie es zu entfernen. Dies kann Ihr Problem lösen

0
Ismoilov Amir

Ich hatte ein ähnliches Problem und sortierte es folgendermaßen:

<script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
<script>
    if($("textarea").length > 0){
        CKEDITOR.replace( 'ckeditor' );
    }
</script>
0
MJCoder

wenn Sie das nur loswerden möchten, verwenden Sie 

try{CKEDITOR.replace('body')}catch{}

dadurch wird CKEDITOR dort geöffnet, wo Sie es möchten 

0
Sanjay

Dies ist der richtige Weg (Ich habe diese Methode gefunden, indem ich Django admin)

var textAreaEl = document.getElementById("id_html_txt")
var textAreadData = textAreaEl.dataset.config

var textEditor = CKEDITOR.replace(textAreaEl, textAreadData);
textEditor.insertHtml(textAreaEl)
  • Die obige Konfiguration gilt für die modale Form, funktioniert aber auch für die normale Form
0
Nishant Singh