5

我创建了自己的 insertImageDialog 挂钩,以允许直接在编辑器中上传文件。

            $('div#insertImageDialog input[type=file]').ajaxfileupload({
                action: $file.attr('data-action'),
                onStart: function() {
                    $loader.show();
                },
                onComplete: function(response) {
                    $loader.hide();
                    if (response.success) {
                        callback(response.imagePath); // <---- oO
                        dialogClose();
                    } else {
                        alert(response.message);
                        $file.val('');
                    }
                }
            });

这在我第一次插入图像时效果很好。

每次之后,它都会失败,但出现以下异常:

未捕获的类型错误:无法调用 null Markdown.Editor.js:1683 commandProto.doLinkOrImage.linkEnteredCallback Markdown.Editor.js:1683 self.initMarkdownEditor.editor.hooks.set.$.ajaxfileupload.onComplete 的方法“removeChild”

上传在编辑器之外工作正常,所以我只能认为这是回调的某种范围问题。

一天中的大部分时间都在为此拉扯我的头发。

4

1 回答 1

2

问题有两个方面

  1. 我没有意识到每次用户单击图像按钮时都会调用该钩子。这意味着我实际上为文件上传设置了多个“更改”处理程序。
  2. 我使用的上传插件希望处理程序注册一次(即使我们清除它)。

我已经在我的博客上记录了完整的工作解决方案。

于 2012-06-01T13:03:40.503 回答