example code javascript jquery html tinymce wysiwyg

javascript - code - wysiwyg editor free



make readonly/disable tinymce textarea (10)

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


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


Eso funciona para ASP.NET MVC Razor

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

al inicializar tinyMCE:

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


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

cómo usar el

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


La solution 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 posted 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 comando '' mceToggleEditor '' 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


Puede ver esta respuesta aquí en @rioted: https://.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); });


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


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

tinymce.activeEditor.getBody().contenteditable = false

¡Saludos!


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


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) { <text> this.getBody().setAttribute(''contenteditable'', false); </text> } });

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) { <text> readonly: 1, </text> } language: ''ar'', ....});