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

时间:2019-01-25 06:54:14

标签: angular ckeditor caret

我正在Angular 7应用程序中使用CKEditor版本16。我已将最大字符长度设置为4096。一旦用户尝试键入4097th,字符控制就会启动并显示从开始到键入为止的所有键入内容,或产生键入延迟。之后,开头显示的多余字符将被自动删除。

我尝试设置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;
};

1 个答案:

答案 0 :(得分:0)

您可以通过访问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();
        }
      } 


    }) 

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