سؤال

لا أحد يعرف كيف يمكنني إرفاق onpaste الحدث في ckeditor 3.x؟

أنا أرغب أساسا في الاستيلاء كنترول + الخامس البيانات وإضافة عدد قليل من النص إليها ثم قم بإضافته إلى المحرر.

لقد نظرت حولها ولكن لم أجد إجابة نهائية. منتدى CKEditor ليس الكثير من المساعدة.

هل كانت مفيدة؟

المحلول

هذا ينبغي أن تفعل خدعة

var editor = CKEDITOR.instances.YourInputControlName;
editor.on('paste', function(evt) {
    // Update the text
    evt.editor.setData(evt.editor.getData() + ' your additional comments.');
}, editor.element.$);

نصائح أخرى

كلا المثالين لديك هي الاصطناعية قليلا.

في البداية، يحصل Editor.getData () جميع محتوى المحرر، لذلك إذا كنت ترغب في معالجة البيانات التي تم لصقها فقط، فأنت بحاجة إلى الحصول على EV.Data.html ولصق المكان الصحيح.

editor = CKEDITOR.instances.editor1;
editor.on('paste', function (evt) {
    var editor = evt.editor;
    evt.stop(); // we don't let editor to paste data, only for current event
    // show loader that blocks editor changes
    $.post('clean.php', {html: evt.data.html}, function (data) {
        editor.insertHtml( data.html ); // text will be inserted at correct place
        // hide loader
    }, 'json');
});

لا تستخدم محرر الوظائف. setReadonly (صحيح / خطأ)، لن تتمكن من لصق النص في المكان الصحيح (في الحالات مع معالجة بيانات ASYNC).

يندلح هذا المثال المحتوى المراد لصقه عن طريق إزالة جميع عناصر IMG.

CKEDITOR.on('instanceReady', function (ev) {
    ev.editor.on('paste', function (ev) {
        ev.data.html = ev.data.html.replace(/<img( [^>]*)?>/gi, '');
    });
});
editor = CKEDITOR.instances[id];

editor.on('paste', function (evt) {
    evt.stop();
    var data = evt.data.dataValue;

    if (window.chrome || window.safari) {
        // removing span wrapper on webkit browsers.
        data = $(data).html();
    }
    evt.editor.insertHtml(data);
});

أعلم أنه سؤال قديم، لكنني أعتقد أنني سأضيف نسختي من إجابة Aliaksej لأنه يسمح باستخدام "منظف" مخصص - لم يعمل تماما بالنسبة لي حتى أندلت إليها على النحو التالي.

editor = CKEDITOR.instances[id];
editor.on('paste', function (evt) { 
   evt.stop();
   $.post('/actions/clean.php', {html: evt.data.dataValue}).done(function (data) {
      evt.editor.insertHtml(data);
   }, 'json');
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top