2017-08-15 86 views
3

我拥有在占位符内通过ID引用图像的内容(例如“$ m(12345)”)。我有一个REST调用,它将为占位符返回一个img标签。CKEditor:在不改变数据的情况下修改视图

我希望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; 
       }); 
      } 
    }); 
}); 

它做的工作用图像标签替换占位符,但切换到源视图时img-tag也存在。

是否有一种简单的方法只将过滤器应用于wysiwyg视图。 我看到的唯一方法是添加一个htmlFilter,将img-tag恢复为占位符。

+0

这不是占位符的要点。从源视图来回切换将应用数据处理。 – Brunis

回答

0

是否有一种简单的方法只适用于所见即所得的过滤器。我看到的唯一方法是添加一个htmlFilter,将img-tag恢复为占位符。

好想法。或者,如果您不希望在每次模式更改时从服务器中删除/取出图像,则可以将占位符放入图像标记的data-属性中。这一切都取决于您的使用情况,但底线是dataFilter用于将数据加载到编辑器和htmlFilter当您从编辑器获取数据(获取数据和切换到源模式时使用相同的方法,因此htmlFilter适用于此处) 。

相关问题