如何在CKEditor中动态切换文本方向

如何在CKEditor中动态切换文本方向,ckeditor,right-to-left,Ckeditor,Right To Left,在我当前的项目中,用户可以用英语和希伯来语输入文本。 根据当前文本自动定义方向会很好。例如,如果文本包含希伯来语符号,则方向应为RTL。但是如果文本不包含希伯来语,那么方向是LTR 文本可以随时更改,我认为最好的解决方案是动态切换方向,就像在谷歌翻译服务中一样。我没有找到已经完成的解决方案,我想提出我自己的解决方案 它的工作原理非常简单。每次,当文本被更改时,我都会检查它是否有希伯来语符号,如果需要,我会更改文本方向。要在配置中应用更改(在我的例子中是文本的方向),我应该使用更新的配置销毁并初始

在我当前的项目中,用户可以用英语和希伯来语输入文本。 根据当前文本自动定义方向会很好。例如,如果文本包含希伯来语符号,则方向应为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();
    })();