Filter CKEditor-过滤html而不创建编辑器实例
有没有一种方法可以实现像Filter CKEditor-过滤html而不创建编辑器实例,filter,ckeditor,Filter,Ckeditor,有没有一种方法可以实现像CKEditor.filter('somehtml')? 如何使用默认规则创建一个过滤器实例,然后使用它?非常简单。您所要做的就是合并并: 函数gimmeFilter(规则){ var过滤器=新的CKEDITOR.filter(规则), writer=new CKEDITOR.htmlParser.basicWriter(); var fn=函数(输入、输出、消息){ var fragment=CKEDITOR.htmlParser.fragment.fromHtml(输
CKEditor.filter('somehtml')代码>?
如何使用默认规则创建一个过滤器实例,然后使用它?非常简单。您所要做的就是合并并:
函数gimmeFilter(规则){
var过滤器=新的CKEDITOR.filter(规则),
writer=new CKEDITOR.htmlParser.basicWriter();
var fn=函数(输入、输出、消息){
var fragment=CKEDITOR.htmlParser.fragment.fromHtml(输入);
writer.reset();
filter.applyTo(片段);
fragment.writeHtml(writeHtml);
返回writer.getHtml();
};
fn.allow=功能(规则){
允许(规则);
};
返回fn;
}
var f=gimmeFilter({
“p b i”:{
课程:“foo”,
样式:“文本对齐”
}
} );
f(“foo bar bum
”);
>>>“foo-bar-bum
”
查看标签、style=“color:red”
和class=“boom”
都不见了 谢谢大家!!但我正在寻找一种方法,在不创建编辑器的情况下获得与我的编辑器相同的规则。所以我可以这样做:var f=gimmeFilter(CKEDITOR.getAutomaticModeRules())代码>。您不需要创建任何实例即可使上述代码正常工作。但是,如果需要了解实例的默认规则,请参见CKEDITOR.instances.instanceName.filter.allowedContent
CKEDITOR.instances.instanceName.filter.allowedContent
由filter.allow
生成,不能直接传递给构造函数。有没有办法获取原始规则或将过滤器。允许内容转换为原始规则?嗯。。。但你想克隆过滤器?如果您只想重用编辑器.filter
,则不需要这样做。尽管如此,克隆应该不会太复杂-您需要将过滤器。允许内容转换为原始格式,并且它们非常相似(如果不完全相同)。@TrantorLiu您成功了吗?我也在试着做同样的事情?
function gimmeFilter( rules ) {
var filter = new CKEDITOR.filter( rules ),
writer = new CKEDITOR.htmlParser.basicWriter();
var fn = function( input, output, msg ) {
var fragment = CKEDITOR.htmlParser.fragment.fromHtml( input );
writer.reset();
filter.applyTo( fragment );
fragment.writeHtml( writer );
return writer.getHtml();
};
fn.allow = function( rules ) {
filter.allow( rules );
};
return fn;
}
var f = gimmeFilter( {
'p b i': {
classes: 'foo',
styles: 'text-align'
}
} );
f( '<p style="text-align:right"><b class="boom" style="color: red">foo</b> <i class="foo">bar</i> <u>bum</u></p>' );
>>> "<p style="text-align:right"><b>foo</b> <i class="foo">bar</i> bum</p>"