присоединение обработчиков событий к новым элементам TinyMCE - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать плагин TinyMCE, который добавляет обработчик событий для определенных типов элементов в редакторе по мере их создания во время редактирования.Я начал с наблюдения за событием NodeChange, но оно казалось очень ненадежным, часто не вызывалось при создании определенных типов элементов.

В другом ответе я увидел, что предлагается послушать DOMNodeInsertedсобытие самого документа.Когда я делаю это, я вижу, как создаются новые элементы, но у меня есть две проблемы:

  1. Мне нужно установить для идентификатора вновь созданного элемента уникальное значение.Первый элемент, который я делаю, это работает.Но второй элемент каким-то образом имеет тот же идентификатор (дублируется!), Когда вызывается событие, и независимо от того, изменяю я его или нет, после этого оно очищается без идентификатора.Я могу обойти это, установив тайм-аут и установив идентификатор в нем, но я не уверен, есть ли какой-то другой способ задания пропущенного идентификатора, который не конфликтует с TinyMCE.

  2. Когда я создаю обработчик события 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.

Обновление:Похоже, что обработчики событий подключены , но как только некоторые виды редактирования (например, отступ), все объекты дублируются, а оригиналы удаляются.Дублирование не сохраняет исходные обработчики событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...