Ich muss zur Laufzeit eine Tinymce-Textarea deaktivieren oder readonly machen.
Verwenden Sie den Konfigurationsparameter readonly
tinyMCE.init({
...
theme : "advanced",
readonly : 1
});
Hier ist ein Link zu einer Demo .
Update: Um zu verhindern, dass Benutzer Inhalte in Ihrem Editor bearbeiten, müssen Sie das contenteditable-Attribut der Editoren im iframe-body auf false setzen:
tinymce.activeEditor.getBody().setAttribute('contenteditable', false);
Ab Version 4.3.x können Sie den folgenden Code für den Readonly-Modus verwenden
tinymce.activeEditor.setMode('readonly');
und für den Designmodus:
tinymce.activeEditor.setMode('design');
WENN Sie nur einen Editor haben, funktioniert dies:
tinymce.activeEditor.getBody().setAttribute('contenteditable', false);
Wenn Sie mehrere Editoren haben, müssen Sie diese anhand der ID des Textbereichs auswählen:
tinyMCE.get('textarea_id').getBody().setAttribute('contenteditable', false);
Thariamas Lösung setzt alle TinyMCE-Textbereiche auf der Seite zum Lesen.
Die beste Lösung, die ich gefunden habe, war posted von Magnar Myrtveit, die Felder auf Readonly setzt, die das Readonly-Attribut haben. Hier ist der Code:
tinyMCE.init({
...
setup: function(ed) {
if ($('#'+ed.id).prop('readonly')) {
ed.settings.readonly = true;
}
}
});
sie können verwenden
this.getBody().setAttribute('contenteditable', false);
schauen Sie sich die vollständige Lösung an, meine Serverseite ist 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>
}
});
eine andere Möglichkeit, dies zu tun, wenn Sie server side condition
haben, der im zurückgegebenen HTML-Code entfernt wird
tinymce.init({
selector: ... ,
....
@if (ViewBag.desableEditExseptExportNumber != null && ViewBag.desableEditExseptExportNumber == true)
{
<text>
readonly: 1,
</text>
}
language: 'ar',
....});
Zum Deaktivieren können Sie diesen Befehl aufrufen:
tinymce.EditorManager.execCommand('mceToggleEditor', true, tinymceId);
Und um den Editor wieder zu aktivieren, können Sie diesen Befehl erneut aufrufen.
Der Befehl 'mceToggleEditor' schaltet den WYSIWYG-Modus ein oder aus, indem der Textbereich und die Editorinstanz angezeigt oder ausgeblendet werden. Dies ist nicht dasselbe wie mceAddControl oder mceRemoveControl, da die Instanz noch vorhanden und nicht initialisiert ist, sodass diese Methode schneller ist.
Link für obigen Befehl: http://archive.tinymce.com/wiki.php/TinyMCE3x:Befehlsidentifizierer
Vielleicht hilft diese Codezeile in anderen Browsern, die iframes verwenden.
tinymce.activeEditor.getBody().contenteditable = false
Grüße!
Ich versuche, den Befehl Readonly: 1 Zu verwenden, wenn ich die Symbolleiste verwende.
wie benutzt man das
tinymce.activeEditor.getBody (). setAttribute ('contenteditable', false);
Das funktioniert für ASP.NET MVC Razor
readonly: @(Model.Readonly ? "true" : "false")
beim Initialisieren von tinyMCE:
tinymce.init({/* put readonly setting here */});
Diese Antwort finden Sie hier unter @rioted: https://stackoverflow.com/a/34764607/1827960 .
Ich habe es benutzt, um mit dieser Lösung zu kommen:
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);
});