如何在CKEditor中动态切换文本方向
在我当前的项目中,用户可以用英语和希伯来语输入文本。 根据当前文本自动定义方向会很好。例如,如果文本包含希伯来语符号,则方向应为RTL。但是如果文本不包含希伯来语,那么方向是LTR如何在CKEditor中动态切换文本方向,ckeditor,right-to-left,Ckeditor,Right To Left,在我当前的项目中,用户可以用英语和希伯来语输入文本。 根据当前文本自动定义方向会很好。例如,如果文本包含希伯来语符号,则方向应为RTL。但是如果文本不包含希伯来语,那么方向是LTR 文本可以随时更改,我认为最好的解决方案是动态切换方向,就像在谷歌翻译服务中一样。我没有找到已经完成的解决方案,我想提出我自己的解决方案 它的工作原理非常简单。每次,当文本被更改时,我都会检查它是否有希伯来语符号,如果需要,我会更改文本方向。要在配置中应用更改(在我的例子中是文本的方向),我应该使用更新的配置销毁并初始
文本可以随时更改,我认为最好的解决方案是动态切换方向,就像在谷歌翻译服务中一样。我没有找到已经完成的解决方案,我想提出我自己的解决方案 它的工作原理非常简单。每次,当文本被更改时,我都会检查它是否有希伯来语符号,如果需要,我会更改文本方向。要在配置中应用更改(在我的例子中是文本的方向),我应该使用更新的配置销毁并初始化CKEditor 如何测试它:
var CKEditorConfig={
contentsLangDirection:“ltr”,
forcePasteAsPlainText:true
},
编辑监督;
(函数(){
//初始化编辑器。
函数initEditor(){
editorInstance=CKEDITOR.replace('editor',CKEditorConfig);
editorInstance.on('contentDom',function(){
var body=this.document.getBody();
//一旦编辑器死亡,这些侦听器将被停用。
//输入事件以跟踪内容的任何更改
this.editable(){
editorOnChange();
});
});
}
//关于更改回调。
函数editorOnChange(){
var text=CKEDITOR.instances['editor'].getData(),
方向=isHebrew(文本)?'rtl':'ltr',
currentDirection=CKEditorConfig.contentsLangDirection;
//方向已更改->重新编辑。
如果(currentDirection&¤tDirection!=方向){
CKEditorConfig.contentsLangDirection=方向;
CKEDITOR.instances['editor'].destroy();
editorInstance=initEditor();
}
}
//检查当前文本是否使用希伯来语。
函数(文本){
const HebrewChars=new RegExp(“[\u05D0-\u05FF]+”;
如果(!HebrewChars.test(文本)){
返回false;
}
返回true;
}
//初始化编辑器。
initEditor();
})();代码>