make readonly / disable tinymce textarea

Necesito desactivar o hacer solo un texto de texto de tinymce en tiempo de ejecución.

Use el parámetro de configuración de solo lectura

tinyMCE.init({ ... theme : "advanced", readonly : 1 }); 

Aquí hay un enlace a una demostración .

Actualización : lo que puede hacer para evitar que los usuarios editen contenido en su editor es establecer el atributo content-editable de los editores iframe body en false:

 tinymce.activeEditor.getBody().setAttribute('contenteditable', false); 

A partir de la versión 4.3.x puede usar el siguiente código para el modo de solo lectura

 tinymce.activeEditor.setMode('readonly'); 

y para el modo de diseño:

 tinymce.activeEditor.setMode('design'); 

SI solo tienes un editor, esto funciona:

 tinymce.activeEditor.getBody().setAttribute('contenteditable', false); 

Si tiene varios editores, debe seleccionarlos mediante el id del área de texto:

 tinyMCE.get('textarea_id').getBody().setAttribute('contenteditable', false); 

La solución de Thariama establecerá todas las áreas de texto de TinyMCE en la página de solo lectura.

La mejor solución que he encontrado fue publicada por Magnar Myrtveit, que configurará campos de solo lectura que tienen el atributo de solo lectura. Aquí está el código:

 tinyMCE.init({ ... setup: function(ed) { if ($('#'+ed.id).prop('readonly')) { ed.settings.readonly = true; } } }); 

Para deshabilitar puede llamar a este comando:

 tinymce.EditorManager.execCommand('mceToggleEditor', true, tinymceId); 

Y para habilitar de nuevo al editor, puede volver a llamar a este comando.

El comandomceToggleEditor ‘ activa o desactiva el modo WYSIWYG al mostrar u ocultar el área de texto y la instancia del editor. Esto no es lo mismo que mceAddControl o mceRemoveControl porque la instancia todavía está allí y no está inicializada, por lo que este método es más rápido.

Enlace para el comando anterior: http://archive.tinymce.com/wiki.php/TinyMCE3x:Command_identifiers

puedes usar

 this.getBody().setAttribute('contenteditable', false); 

mira la solución completa, mi lado del servidor es 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) {  this.getBody().setAttribute('contenteditable', false);  } }); 

Una forma análoga de hacerlo si tiene server side condition que se eliminará en el HTML devuelto

  tinymce.init({ selector: ... , .... @if (ViewBag.desableEditExseptExportNumber != null && ViewBag.desableEditExseptExportNumber == true) {  readonly: 1,  } language: 'ar', ....}); 

Tal vez esta línea de código ayude en otros navegadores que usan iframes.

 tinymce.activeEditor.getBody().contenteditable = false 

¡Saludos!

Intento utilizar Readonly: 1 comando cuando lo uso, la barra de herramientas desaparece.

cómo usar el

tinymce.activeEditor.getBody (). setAttribute (‘contenteditable’, falso);

Puede ver esta respuesta aquí en @rioted: https://stackoverflow.com/a/34764607/1827960 .

Lo usé para llegar a esta solución:

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

Eso funciona para ASP.NET MVC Razor

 readonly: @(Model.Readonly ? "true" : "false") 

al inicializar tinyMCE:

 tinymce.init({/* put readonly setting here */});