CKEditor:修改视图而不更改数据

时间:2017-08-15 12:53:42

标签: ckeditor

我的内容在占位符中引用了ID(例如“$ m(12345)”)。我有一个REST调用,它将为占位符返回一个img-tag。

我希望CKEditor在编辑器中打开内容或插入占位符时显示图像。但我希望占位符保留在内容中(包括切换到源视图时)

我尝试通过向dataFilter添加规则来实现此目的:

CKEDITOR.on('instanceLoaded', function(ckeditor){
     var mediaPlaceholderRegex = /\$m\(.*\)/;
     ckeditor.editor.dataProcessor.dataFilter.addRules({
         text: function( text, node ) {
                return text.replace( mediaPlaceholderRegex, function( match ) {

                    var params = "placeholder="+match;
                    var xhttp = new XMLHttpRequest();
                    xhttp.open("POST", url, false);
                    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                    xhttp.send(params);
                    return xhttp.responseText;
                } );
            }
     });
 });

它使用image标签替换占位符,但切换到源视图时img-tag也在那里。

是否有一种简单的方法可以仅对wysiwyg视图应用过滤器。 我看到的唯一方法是添加一个htmlFilter,它将img-tag还原为占位符。

1 个答案:

答案 0 :(得分:0)

  

是否有一种简单的方法可以仅对wysiwyg视图应用过滤器。我看到的唯一方法是添加一个htmlFilter,它将img-tag还原为占位符。

善于思考。如果您不希望在每次模式更改时从服务器删除/提取图像,则可以将占位符放入图像标记的data-属性中。这完全取决于您的使用案例,但最重要的是当您从编辑器加载数据时使用dataFilter和从编辑器获取数据时使用htmlFilter(获取数据和切换时使用相同的方法)到源模式,因此htmlFilter适用于此处。)