Редактор Pagedown вставляет изображение в диалоговое окно

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

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

Рвал на себе волосы из-за этого большую часть дня.


person Ben Foster    schedule 31.05.2012    source источник


Ответы (1)


Проблема была в два раза

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

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

person Community    schedule 01.06.2012
comment
Я прочитал ваш пост, но у меня все еще есть проблемы. Я понимаю, что хук вызывается каждый раз, но почему это устанавливает несколько обработчиков «изменений»? - person Sam Selikoff; 18.04.2013