Я создал свой собственный диалог загрузки библиотеки с модальным Semantic UI. Я пытаюсь интегрировать этот диалог в редактор Pagedown.
var converter = Markdown.getSanitizingConverter();
var editor = new Markdown.Editor(converter);
editor.hooks.set("insertImageDialog", function(callback) {
uploadModal.load(); // The dialog HTML gets loaded asynchronously
$('body').on('selection', '.upload-modal', function(e, src) {
console.log(src);
callback(src);
});
return true; // tell the editor that we'll take care of getting the image url
});
Все работает нормально при первом выборе изображения из диалога, но после этого ломается:
Uncaught TypeError: невозможно вызвать метод removeChild для null Markdown.Editor.js
Согласно этому вопросу SO, это как-то связано с определением обработчика событий несколько раз, но я не могу обернуть мою голову вокруг этого.
Дополнительная информация:
HTML для инициализации модального окна загружается асинхронно, вот код JS:
var uploadModal = (function() {
/**
* Load the upload modal.
*/
this.load = function() {
var $modal = $('.upload-modal');
if ($modal.length) {
// Show the already existing modal.
$modal.modal('show');
} else {
// Get the HTML
var request = $.get(appUrl('admin/upload/modal'));
request.done(function(html) {
// Make the modal.
var $modal = $(html);
$modal.modal({
observeChanges: true,
onApprove: function () {
var upload = $modal.find('.selected.upload'),
src = upload.find('.image > img').attr('src');
// Bind the event listener which will return the upload's source URL
$modal.trigger('selection', src);
return true;
}
}).modal('show');
// Some event handlers here
});
}
};
})();
Я загружаю модальное окно, вызывая uploadModal.load()
, и наблюдаю всякий раз, когда изображение выбирается, присоединяя обработчик события «выбор».
$('body').on('selection', '.upload-modal', function(e, src) {...
stackoverflow. ком/вопросы/39562057/ - person Omari Victor Omosa   schedule 19.09.2016