Ich möchte einen benutzerdefinierten Handler für die Schaltfläche "Speichern" haben.Wie überschreiben Sie den Handler für eine Schaltfläche in ckeditor?
Wie kann ich den Standardbefehl überschreiben?
Ich möchte einen benutzerdefinierten Handler für die Schaltfläche "Speichern" haben.Wie überschreiben Sie den Handler für eine Schaltfläche in ckeditor?
Wie kann ich den Standardbefehl überschreiben?
CKEDITOR.plugins.registered['save']=
{
init : function(editor)
{
var command = editor.addCommand('save',
{
modes : { wysiwyg:1, source:1 },
exec : function(editor) {
//YOUR CODE
}
}
);
editor.ui.addButton('Save',{label : 'YOUR LABEL',command : 'save'});
}
}
Wenn Sie die speichern Befehl für nur eine Instanz außer Kraft setzen möchten, können Sie den folgenden Code versuchen:
var editor = $('#myTextarea').ckeditorGet(); // Retrieving CKeditor instance with jQuery
editor.getCommand('save').exec = function(editor) {
// Do whatever you need to
...
return true;
};
Dies sollte für jeden CKEditor Befehl arbeiten.
Die current top answer verwirrte die Symbolleiste Gruppierung für mich (legte die Schaltfläche zum Speichern am Ende), und die other answer nicht in ckeditor v4 funktioniert.
Hier ist, wie es in ckeditor zu tun 4:
html:
<textarea id="CKEditor1"></textarea>
javascript:
<script>
// Need to wait for the ckeditor instance to finish initialization
// because CKEDITOR.instances.editor.commands is an empty object
// if you try to use it immediately after CKEDITOR.replace('editor');
CKEDITOR.on('instanceReady', function (ev) {
// Create a new command with the desired exec function
var editor = ev.editor;
var overridecmd = new CKEDITOR.command(editor, {
exec: function(editor){
// Replace this with your desired save button code
alert(editor.document.getBody().getHtml());
}
});
// Replace the old save's exec function with the new one
ev.editor.commands.save.exec = overridecmd.exec;
});
CKEDITOR.replace('CKEditor1');
</script>
function configureEditor(id) {
var editor = CKEDITOR.replace(id);
editor.on("instanceReady", function() {
// overwrite the default save function
editor.addCommand("save", {
modes: { wysiwyg: 1, source: 1 },
exec: function() {
// get the editor content
var theData = editor.getData();
alert("insert your code here");
}
});
editor.ui.addButton('Save', { label: 'My Save', command: 'save', enabled: 'true' });
var saveButton = $('#cke_' + id).find('.cke_button__save');
saveButton.removeClass('cke_button_disabled');
});
}
In CKEditor 4 das Speichern Plugin soll kündbaren sein . Wenn Sie sich nicht sicher sind, können Sie sich immer die source ansehen. Sie können das Ereignis abbrechen und Ihre eigene Logik in einem Handler anwenden, wie in diesem Beispiel:
//assuming editor is a CKEDITOR.editor instance
editor.on('save', function (event) {
event.cancel();
//your custom command logic
//(you can access the editor instance through event.editor)
});
ich mit ihm einen neuen Befehl für die Erstellung und Änderung des Standard raten würde, da es eine unnötige Abhilfe ist.
10 Wenn Sie die exec-Funktion wie folgt überschreiben, wird sie ohne Parameter aufgerufen. Da Sie aber normalerweise die Variable 'editor' im äußeren Bereich haben, können Sie trotzdem damit arbeiten. Denken Sie daran, den Parameter 'editor' in Ihrer Funktionsdefinition zu belassen, da sonst die Variable 'editor' im Bereich' scoped 'überschrieben würde. – flu