大佬教程收集整理的这篇文章主要介绍了javascript – 如何突出显示与CKeditor中正则表达式匹配的元素?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我实现了一个版本,我用一个span替换正则表达式匹配的胡须,然后是捕获组.当我测试时,这似乎打破了一些模板.
要删除突出显示,我使用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',null ); var style = new CKEDITOR.style( { element:'span',styles: { 'BACkground-color': '#FFFF00' },type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1 } ); editor.removeStyle( style ); editor.getSELEction().removeAllRanges(); } });
谢谢!
>走CKEditor文档的DOM树,并将所有text nodes组合成一个字符串(我们称之为S).使用CKEDITOR.dom.walker
,this answer应该在这里帮助.在树上行走时,建立数据结构集合(我们称之为C),以存储每个文本节点对象及其文本在S内的位置.
>运行你的正则表达式对s.
>如果没有找到匹配,停止.
>否则,使用C集合,找到起始文本节点(让我们称之为SN),并在其内部偏移,对应于S中匹配字符串的起始字符位置.
>使用C集合,找到最终文本节点(我们称之为EN),对应于S内匹配字符串的结束字符位置.
>创建一个CKEDITOR.dom.range
对象并将其定位为SN作为开始,EN作为结束(startContainer / startOffset / endContainer / endOffset).
>使用CKEDITOR.dom.selection.selectRanges()
选择上一步的范围.
以上是大佬教程为你收集整理的javascript – 如何突出显示与CKeditor中正则表达式匹配的元素?全部内容,希望文章能够帮你解决javascript – 如何突出显示与CKeditor中正则表达式匹配的元素?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。