Pagedown Editor inserttimagedialog крючок

Я создал свой собственный хук 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('');
                    }
                }
            });

Это отлично работает, когда я в первый раз вставляю изображение.

Каждый раз после этого происходит сбой со следующим исключением:

Uncaught TypeError: Невозможно вызвать метод 'removeChild' со значением null Markdown.Editor.js:1683 commandProto.doLinkOrImage.linkEnteredCallback Markdown.Editor.js:1683 self.initMarkdownEditor.editor.hooks.set.$. Ajaxfileupte.on

Загрузка отлично работает вне редактора, поэтому я могу только думать, что это какая-то проблема с обратным вызовом.

Большую часть дня тяну меня за волосы.

1 ответ

Решение

Вопрос был в два раза

  1. Я не осознавал, что ловушка вызывается каждый раз, когда пользователь нажимает кнопку изображения. Это означало, что я на самом деле настраивал несколько обработчиков "изменения" для загрузки файла.
  2. Плагин загрузки, который я использовал, ожидал, что обработчик будет зарегистрирован один раз (даже если мы его очистим).

Я задокументировал полное рабочее решение в своем блоге.

Другие вопросы по тегам