【问题标题】:CKEditor widgets forget they're widgets and become uselessCKEditor 小部件忘记它们是小部件并变得无用
【发布时间】:2015-03-23 17:12:03
【问题描述】:

我有这个CKEditor:http://jsfiddle.net/rudiedirkx/kwzcxrLj/(没有按钮图片,最右边3个按钮)

它添加这样的小部件:

        // Add widget.
        editor.widgets.add('ezhealth_widget_' + size, {
            "template":
                '<div class="ezhealth-ckeditor-widget size-' + size + '">' +
                    '<h3 class="header editable">Title</h3>' +
                    '<div class="left"><p>Content</p></div>' +
                    '<div class="right"><p>Content</p></div>' +
                '</div>',
            "editables": {
                "header": {
                    "selector": '.editable',
                },
                "left": {
                    "selector": '.left',
                },
                "right": {
                    "selector": '.right',
                },
            },
            "allowedContent": 'div(!ezhealth-ckeditor-widget); h3(!header); div(!left); div(!right)',
        });

添加小部件时效果很好。但是当您保存页面并对其进行编辑时,该小部件将变为普通的 HTML。 CKEditor 不知道它是一个小部件。它不像新的那样具有正常的编辑约束和样式。

CKEditor 的演示工作正常:http://ckeditor.com/demo#widgets 所以可能是我。

我做错了什么?

【问题讨论】:

    标签: javascript widget ckeditor


    【解决方案1】:

    您需要定义小部件定义的 upcastdowncast 回调,这将使小部件系统知道应该从哪些元素创建该类型的小部件以及该类型的小部件应如何转换为数据。

    editor.widgets.add( 'ezhealth_widget_' + size, {
        // ...
    
        upcast: function( element ) {
            return element.name == 'div'
                && element.hasClass( 'ezhealth-ckeditor-widget' )
                && element.hasClass( 'size-' + size );
        }
    } );
    

    Widget SDKHow does a widget become a widget? 部分了解更多信息。

    【讨论】:

    • 我爱你!!我错过了确切的 1 段,也没有读到足够接近的 Full Source Code。谢谢十亿。但它最终略有不同:jsfiddle.net/rudiedirkx/kwzcxrLj hasClass 不起作用......即使 a = 'size-2575', b = 'ezhealth-ckeditor-widget size-2575 ezhealth_widget_2575', RegExp("(?:^|\\s)"+a+"(?=\\s|$)").test(b) 工作正常。
    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2017-12-07
    • 2022-11-06
    • 2019-03-29
    • 2015-06-28
    相关资源
    最近更新 更多