Pagedown Editor insertimagedialog hook

耗尽温柔 提交于 2019-12-21 17:13:59

问题


I've created my own insertImageDialog hook to allow uploading of files directly within the editor.

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

This works fine the first time I insert an image.

Every time after, it fails with the following exception:

Uncaught TypeError: Cannot call method 'removeChild' of null Markdown.Editor.js:1683 commandProto.doLinkOrImage.linkEnteredCallback Markdown.Editor.js:1683 self.initMarkdownEditor.editor.hooks.set.$.ajaxfileupload.onComplete

The uploading works fine outside of the editor so I can only think it is some kind of scoping issue with the callback.

Have been pulling my hair out over this for most of the day.


回答1:


The issue was two fold

  1. I didn't realize the hook gets called every time the user clicks the image button. This meant that I was actually setting up multiple "change" handlers for the file upload.
  2. The upload plugin I was using expected the handler to be registered once (even if we clear it).

I've documented the full working solution on my blog.



来源:https://stackoverflow.com/questions/10837480/pagedown-editor-insertimagedialog-hook

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!