CKEditor:如何在达到最大限制时将焦点设置在内容的末尾

CKEditor: How to set focus to at the end of content when max-limit reached

我在 Angular 7 应用程序中使用 CKEditor 版本 16。我已将最大字符长度设置为 4096。一旦用户尝试键入第 4097 个字符,控件就会开始并显示从开始到键入的任何内容,或者在键入时产生延迟。以后显示在开头的额外字符将被自动删除。

我已经尝试设置 editorConfig 属性,但没有成功。 我已经交叉检查任何超时代码是这个问题的原因,但事实并非如此。

CKEDITOR.editorConfig = function( config ) {
    config.startupFocus= true;
    config.extraPlugins = 'wordcount';
    config.wordcount = {
        showWordCount: false,
        showCharCount: true,
        maxCharCount: 4096,
        showParagraphs: false,
      countSpacesAsChars: true
    };
    config.pasteFromWordRemoveFontStyles = false;
    config.pasteFromWordRemoveStyles = false;
    config.extraAllowedContent= 'a[href]';
    config.removePlugins = 'resize';
    config.enterMode = CKEDITOR.ENTER_BR;
    config.autoParagraph = false;
};

您可以通过访问ck编辑器实例进行尝试。

    CKEDITOR.instance.editor1.on("key", function (evt){
    let instance = CKEDITOR.instance.editor1
    const data = instance.document.getBody().getText();
    const currentCount = data.replace(/<[^>]*>|\s/g, "").length;

const maxCount = instance.config.wordcount.maxCharCount;
    const isFunKey = (evt.data.keyCode === 8 || evt.data.keyCode === 46 ||

evt.data.keyCode === 35 || evt.data.keyCode === NumberConstants.36 ||
    evt.data.keyCode === 37 || evt.data.keyCode === 38 ||
    evt.data.keyCode === 39 || evt.data.keyCode === 40 ||
    evt.data.keyCode === 1114129 );

      if (currentCount >= maxCount) {
        if (!isFunKey) {
          evt.cancel();
        }
      } 


    }) 

如果你有更多的编辑器,你可以遍历实例并相应地更新代码。