2010-07-28 4 views

Antwort

4
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'}); 
    } 
    } 
2

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.

+0

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

10

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> 
+0

sehr gutes Beispiel, danke: D – Zombyii

+0

Das hat bei mir funktioniert. – devman81

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

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.

Verwandte Themen