我希望能够突出显示(即用颜色或其他方式包裹在跨度中)与CKEditor 中的正则表达式匹配的所有文本。我可能会添加一个按钮来执行此操作,并添加一个按钮来删除突出显示。我的具体用例是突出显示我的 HTML 模板中的所有 mustache 变量(让它很容易看到哪里有 mustache 变量)。
我已经实现了一个版本,其中我用一个跨度替换了一个正则表达式匹配的胡须,然后是捕获组。当我测试时,这似乎在某些模板上中断。
要删除突出显示,我使用 editor.removeStyle,它似乎不适用于所有情况。
这是我实现的示例:
editor.addCommand( 'highlightMustache', {
exec: function( editor ) {
editor.focus();
editor.document.$.execCommand( 'SelectAll', false, null );
var mustacheRegex = /{{\s?([^}]*)\s?}}/g;
var data = editor.getData().replace(mustacheRegex, '<span style="background-color: #FFFF00">{{ $1 }}</span>');
editor.setData( data );
}
});
// command to unhighlight mustache parameters
editor.addCommand( 'unhighlightMustache', {
exec: function( editor ) {
editor.focus();
editor.document.$.execCommand( 'SelectAll', false, null );
var style = new CKEDITOR.style( { element:'span', styles: { 'background-color': '#FFFF00' },type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1 } );
editor.removeStyle( style );
editor.getSelection().removeAllRanges();
}
});
谢谢!