CKEditor 不允许在小部件中嵌套 <a> 元素

CKEditor doesn't allow to have nested <a> element in widget

我想要一个可以在里面包含 <button><a></a></button> 的小部件。不幸的是,CKE 删除了 <a></a>。如何克服这个问题?

这是代码:

CKEDITOR.plugins.add( 'interButton', {
    requires: 'widget',
    icons: 'interButton',
    init: function( editor ) {

        editor.widgets.add('interButton', {
            button: 'Add Button',

            template:
                '<button><a></a></button>',

            allowedContent:
                'button[*]{*}(*); a[*]{*}(*)',

            upcast: function( element ) {
                return element.name == 'button';
            }
        });

    }
});

您可以将某些元素推送到受保护的源,CAKE 将服从。

示例:

config.protectedSource.push(/<button[^>]*><a[^>]*><\/a><\/button>/g);

以上我还没有测试过,但应该可以。