0

我正在尝试使用 dataProcessor htmlFilter 为与我的条件匹配的 ckeditor“元素”附加 onclick 事件。sdk 记录了一个方法 $,它返回内部“元素”的本机 dom 元素。

{Object} $ 自:3.0 此类实例表示的本机 DOM 对象。var element = new CKEDITOR.dom.element('span'); 警报(元素。$.nodeType);// "1"

我想要完成的是:

我想显示一个自定义弹出窗口,以便用户在用户单击文档中具有“数据注释”属性的 div 时输入特殊注释。然后将用户输入的内容插入到该 div 的 innerHTML 中。我可能在文档中有几个部分可以插入“注释”,并且用户可能在当前文档中包含一个模板,该模板也将包含“注释”或其他应该可以通过附加 htmlFilter 规则单击的部分。

 editor.dataProcessor.htmlFilter.addRules(
                    {
                        elements :
                        {
                            div : function( element )
                            {
                                if (element.attributes.data-notes) {
                                  console.log(element) // exists..great
                                  console.log(element.$) // undefined!
                                  element.$.onclick = function() { ... }
                                }

                            }
                        }
                    });
4

1 回答 1

1

dataProcessor 既不适用于原生 DOM 元素,也不适用于 CKEditor 元素。它适用于简化的合成元素,这些元素只不过是 DOM 的文本表示(标签 + 属性 + 内部内容)。所以你不能按照这种方式。

适合您的解决方案类似于占位符插件( demo )。不同之处在于您的插件将具有稍微不同的getSelectedPlaceholder实现(因为您正在寻找具有特定属性的 div ),onclick(而不是双击;我不会改变这一点),没有createPlaceholder和没有dataProcessor 的东西

有一个很好的编码!;)

于 2012-10-18T22:23:39.060 回答