首页 文章

在CKEditor中上传回调

提问于
浏览
2

我正在尝试配置CKEditor以允许用户从她的计算机上传图像 . 我正在使用filebrowserUploadUrl,所以我可以将图像上传到服务器并获取分配给它的URL,但我无法弄清楚如何将URL传递给实际的编辑器......

网上的一些例子谈到从服务器返回像 <script>parent.CKEDITOR.tools.callFunction ... 这样的东西,但是我觉得's quite ugly, isn'有一种方法告诉CKEditor“在图像上传后,调用这个函数”?

2 回答

  • 2

    再次阅读语法:获取CKEDITOR对象并告诉它回调函数,因此它完全符合您的要求 .

  • 0

    服务器不应返回javascript以供客户端呈现 .

    即使以下是一个丑陋的丑陋...丑陋的黑客..我仍然更喜欢它从服务器发送javascript:

    (上传图像后在编辑器中自动插入图像的示例 - 适用于4.4.7)

    var onUploadImage = function (dialog) {
    
        // Get the contents in the iframe
        var iframe = $('.cke_dialog_ui_input_file iframe');
        iframe.one('load', function(ev) {
            var fileUrl = ev.target.contentDocument.body.innerText;
            dialog.getContentElement('info', 'txtUrl').setValue(fileUrl);
            $(".cke_dialog_ui_button_ok span").click();
        });
    };
    
    var onLoadImageDialog = function () {
        var dialog = CKEDITOR.dialog.getCurrent(); 
    
        // Open default tab
        this.selectPage('Upload');
    
        $('.cke_dialog_ui_fileButton').click(onUploadImage.bind(null, dialog));
    };
    
    var onDialogDefinition = function( ev ) {
        var name = ev.data.name;
        var definition = ev.data.definition;
        if ( name !== 'image' ) {
            return;
        }
        definition.onLoad = onLoadImageDialog
    };
    
    CKEDITOR.on('dialogDefinition', onDialogDefinition);
    

    当然,正确的方法是创建自定义插件 .

相关问题