Присоединение обработчиков событий к новым элементам TinyMCE
Я пытаюсь создать плагин TinyMCE, который добавляет обработчик событий для определенных типов элементов в редакторе по мере их создания во время редактирования. Я начал с просмотра события NodeChange, но оно казалось очень ненадежным, часто не вызывалось при создании определенных типов элементов.
В другом ответе я увидел, что он предложил прослушать событие DOMNodeInserted самого документа. Когда я это делаю, я вижу, как создаются новые элементы, но у меня есть две проблемы:
Мне нужно установить идентификатор недавно созданного элемента в уникальное значение. Первый элемент, который я делаю, это работает. Но второй элемент каким-то образом имеет тот же идентификатор (дублируется!), Когда вызывается событие, и независимо от того, изменяю я его или нет, после этого оно очищается без идентификатора. Я могу обойти это, установив тайм-аут и установив идентификатор в этом, но я не уверен, есть ли какой-то другой способ установки пропущенного идентификатора, который не конфликтует с TinyMCE.
Когда я создаю обработчик события onclick для вновь созданного элемента, он не вызывается при нажатии на элемент. Я попытался подключить обработчик событий несколькими способами:
elem.onclick = myEventHandler
elem.addEventListener ("щелчок", myEventHandler, правда)
tinyMCE.DOM.bind (эль, "нажмите", myEventHandler)
tinyMCE.dom.DOMUtils.bind (эль, "нажмите", myEventHandler)
и как большой подход молотка я даже попробовал:
tinymce.activeEditor.on('click', function(e) {
console.debug("click:",e.target);
});
Почему я не получаю событие? Что я делаю неправильно? Мне не совсем понятно, какой правильный метод использовать, так как многие вопросы о событиях относятся к предыдущим версиям (например, 3 и 4) TinyMCE, который сейчас находится на версии 5.
Обновление. Похоже, что обработчики событий присоединяются, но как только некоторые виды редактирования (например, отступ) дублируют все объекты, а оригиналы удаляются. Дублирование не сохраняет исходные обработчики событий.