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