J'ai besoin de désactiver ou de faire en lecture seule un texte tinymce au moment de l'exécution.
Utilisez le paramètre de configuration en lecture seule
tinyMCE.init({
...
theme : "advanced",
readonly : 1
});
Voici un lien vers une démo .
Update: Pour empêcher les utilisateurs de modifier le contenu de votre éditeur, définissez l'attribut contenteditable des éditeurs iframe body sur false:
tinymce.activeEditor.getBody().setAttribute('contenteditable', false);
A partir de la version 4.3.x, vous pouvez utiliser le code ci-dessous pour le mode lecture seule
tinymce.activeEditor.setMode('readonly');
et pour le mode création:
tinymce.activeEditor.setMode('design');
Si vous n’avez qu’un seul éditeur, cela fonctionne:
tinymce.activeEditor.getBody().setAttribute('contenteditable', false);
Si vous avez plusieurs éditeurs, vous devez les sélectionner en fonction de l'id de la zone de texte:
tinyMCE.get('textarea_id').getBody().setAttribute('contenteditable', false);
La solution de Thariama mettra tous les textes de TinyMCE de la page en lecture seule.
La meilleure solution que j'ai trouvée était posted de Magnar Myrtveit, qui définira les champs en lecture seule dotés de l'attribut readonly. Voici le code:
tinyMCE.init({
...
setup: function(ed) {
if ($('#'+ed.id).prop('readonly')) {
ed.settings.readonly = true;
}
}
});
vous pouvez utiliser
this.getBody().setAttribute('contenteditable', false);
jetez un oeil à la solution complète, mon côté serveur est Asp.net MVC
setup: function (ed) {
ed.on('init', function () {
this.execCommand("fontSize", false, "17px");
$("html,body").scrollTop(0);
@if (ViewBag.desableEdit != null && ViewBag.desableEdit == true)
{
<text>
this.getBody().setAttribute('contenteditable', false);
</text>
}
});
une autre façon de le faire si vous avez server side condition
qui sera supprimé du code HTML renvoyé
tinymce.init({
selector: ... ,
....
@if (ViewBag.desableEditExseptExportNumber != null && ViewBag.desableEditExseptExportNumber == true)
{
<text>
readonly: 1,
</text>
}
language: 'ar',
....});
Pour désactiver, vous pouvez appeler cette commande:
tinymce.EditorManager.execCommand('mceToggleEditor', true, tinymceId);
Et pour réactiver l'éditeur, vous pouvez à nouveau appeler cette commande.
La commande 'mceToggleEditor' active ou désactive le mode WYSIWYG en affichant ou en masquant la zone de texte et l'instance de l'éditeur. Ce n'est pas la même chose que mceAddControl ou mceRemoveControl car l'instance est toujours là et non initialisée, donc cette méthode est plus rapide.
Lien pour la commande ci-dessus: http://archive.tinymce.com/wiki.php/TinyMCE3x:Command_identifiers
Peut-être que cette ligne de code aide les autres navigateurs utilisant des iframes.
tinymce.activeEditor.getBody().contenteditable = false
Cordialement!
J'essaie d'utiliser Readonly: 1 lorsque la commande que je l'utilise, la barre d'outils disparaît.
comment utiliser le
tinymce.activeEditor.getBody (). setAttribute ('contenteditable', false);
Cela fonctionne pour ASP.NET MVC Razor
readonly: @(Model.Readonly ? "true" : "false")
en initialisant tinyMCE:
tinymce.init({/* put readonly setting here */});
Vous pouvez voir cette réponse ici par @rioted: https://stackoverflow.com/a/34764607/1827960 .
Je l'ai utilisé pour proposer cette solution:
tinymce.settings = $.extend(tinymce.settings, { readonly: 1 });
tinymce.EditorManager.editors.forEach(function (editor) {
tinymce.EditorManager.execCommand('mceRemoveEditor', false, editor.id);
//tinymce.EditorManager.editors = [];
tinymce.EditorManager.execCommand('mceAddEditor', false, editor.id);
});