web-dev-qa-db-fra.com

Comment détruire correctement l'instance CKEditor?

J'utilise CKeditor 3.4 sur une page assez simple. J'ai un problème (parfois) où lorsque j'appelle document.main_form.submit (), il n'enverra pas le contenu de la zone de texte. Après quelques lectures, il semble que CKeditor ne détruit pas correctement. J'ai essayé de le détruire manuellement avant d'enregistrer le formulaire, mais je n'ai pas pu l'appeler. La chose étrange est que cela fonctionne parfois, mais pas d'autres. Je suis sur Chrome, donc ça peut gâcher des choses, mais la même chose se produit dans Firefox.

Comment puis-je détruire correctement le CKeditor afin qu'il envoie toujours les données de la zone de texte dans POST. Merci!

25
Shane Reustle

J'ai eu ce problème. Quelle douleur.

Pour détruire correctement l'instance de l'éditeur, essayez

if (CKEDITOR.instances.myInstanceName) CKEDITOR.instances.myInstanceName.destroy();

De la documentation ici

J'ai résolu le problème de contenu manquant en affectant le contenu de l'éditeur à un champ caché avant la publication. J'utilise ASP.Net, mais cela devrait fonctionner universellement.

dans le gestionnaire de clics côté client du bouton d'envoi, appelez

if (CKEDITOR.instances.myInstanceName)
    document.getElementById('hiddenField').value = CKEDITOR.instances.getData();
38
Laramie

J'ai utilisé une fois angularjs ui-router avec une instance CKEDITOR pour chaque sous-vue. J'ai utilisé la solution suivante pour effacer les instances à chaque fois que je charge l'interface utilisateur

for(name in CKEDITOR.instances)
{
    CKEDITOR.instances[name].destroy()
}
14
Bernie GGGG

Dans ma situation

CKEDITOR.instances.myInstanceName.destroy();

n'a pas aidé, car j'avais ouvert CKEditor dans jquery dialog en double-cliquant sur un élément. Lorsque j'ai fermé l'éditeur et que je l'ai rouvert, mon code s'est écrasé.
La solution utilisait

CKEDITOR.instances.myInstanceName.destroy(false);

qui a mis à jour l'élément DOM ( lien vers la documentation ).

8

utilisez ce code simple. Notez que mon identifiant de zone de texte est editor1.
ou Vous pouvez également le vérifier avec console.log(CKEDITOR.instances.editor1);

if (CKEDITOR.instances.editor1) {
     CKEDITOR.instances.editor1.destroy();
}
6
sandeep kumar

for(name in CKEDITOR.instances){ CKEDITOR.instances[name].destroy() }

Utilisez pour coder pour détruire toutes les instances créées par ckeditor

5
ashish naghate