将事件处理程序附加到新的TinyMCE元素

时间:2019-07-09 20:58:27

标签: javascript tinymce tinymce-5

我正在尝试创建一个TinyMCE插件,该插件在编辑过程中创建的某些类型的元素中添加了事件处理程序。我从观看NodeChange事件开始,但是它似乎非常不可靠,在创建某些类型的元素时通常不会被调用。

在另一个answer中,我看到它建议侦听文档本身的DOMNodeInserted事件。当我这样做时,我可以看到正在创建新的元素,但是我有两个问题:

  1. 我需要将新创建的元素的id设置为唯一值。我对此执行的第一个元素起作用。但是第二个元素在调用事件时以某种方式具有相同的ID(重复!),并且无论是否更改它,之后都将其清除为无ID。我可以通过设置超时并在其中设置id来解决此问题,但是我不确定是否还有其他方法可以设置与TinyMCE不冲突的丢失的id。

  2. 当我在新创建的元素上创建onclick事件处理程序时,单击该元素时不会调用它。我尝试通过几种方式附加事件处理程序:

    elem.onclick = myEventHandler

    elem.addEventListener(“ click”,myEventHandler,true)

    tinyMCE.DOM.bind(elem,“ click”,myEventHandler)

    tinyMCE.dom.DOMUtils.bind(elem,“ click”,myEventHandler)

作为一个大锤子,我什至尝试过:

tinymce.activeEditor.on('click', function(e) {
    console.debug("click:",e.target);
});

为什么我没有参加活动?我究竟做错了什么?对我而言,目前尚不清楚使用哪种正确方法,因为有关事件的许多问题都针对TinyMCE的先前版本(例如3和4),而现在的版本是5。

更新:似乎已附加了事件处理程序 ,但是只要进行了某种编辑(例如,缩进),就会复制整个对象,并删除原始对象。重复操作不会保留原始事件处理程序。

0 个答案:

没有答案