我创建了最简单的小部件,它由一个带有类的div组成。模板是;

<div class="simple" data-padding="false"></header>


该对话框包含1个复选框,用于更改填充。

该小部件可以正常工作,投射效果很好,当您将鼠标悬停在其上方时,会在其周围显示黄线。但是,双击打开对话框是不可能的,没有任何反应,也没有控制台错误。我希望在div内双击可以打开对话框。

当第二个div嵌套时,将其设置为可编辑状态,并且在主div中添加了一些填充,则可以双击两个div之间的填充区域,这将打开对话框,但是当然不是我想要..

这是怎么回事,这是一个错误吗?

最佳答案

我最初通过在双击事件中添加侦听器来解决此问题;

CKEDITOR.plugins.add('simple', {
    init: function(editor) {
        editor.on( 'doubleclick', function(e) {
            var ClickedWidget = e.editor.widgets.widgetHoldingFocusedEditable;
            if (ClickedWidget != null && ClickedWidget.name == 'simple') {
                ClickedWidget.edit();
            }
        });


这很好用,但是在选择可编辑元素中的文本时遇到了麻烦。因此,这也解释了为什么这样设置。

因此,为了正确解决此问题,我创建了一个插件,该插件在右键单击小部件时显示一个上下文菜单,并带有编辑和删除选项。我已经在CKEditor网站上提供了此插件供其他人使用;

http://ckeditor.com/addon/widgetcontextmenu

关于javascript - 双击CKEditor小部件以打开对话框不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44671182/

10-16 13:00