Word Count 插件为 TinyMCE 编辑器添加了字数统计功能。

加载后,Word Count 插件会:

  • 在状态栏中放置一个单词和字符计数器。

    • 默认情况下,计数器显示在 Powered by Tiny 产品署名徽标旁边。

    • 点击状态栏中的计数器可以在单词计数和字符计数之间切换显示。

  • 在工具菜单中添加一个Word count命令。

    • 选择此命令会弹出一个Word Count对话框,显示当前文档的单词数和字符数。如果有选中的内容,也会显示选中内容的单词数和字符数。

    • 如果 wordcount 也被添加到工具栏配置中,那么会显示一个 Word Count 工具栏项,其功能与 工具 → Word count 菜单命令等效。

字数统计逻辑

Word count 插件通过在预定义的单词边界处分隔字符串来统计“单词”数。

单词边界字符

一些被视为单词边界的字符

名称示例及备注

空格

包括空格字符实体,如  (不换行空格字符实体)和  (窄空格字符实体)。

长破折号

—

短破折号

–

问号

?

逗号

,

分号

;

感叹号

!

斜杠(又称前斜杠)

/

脱字符

^

序号符号

№

波浪号

~

加号

+

竖线(又称管道字符)

|

美元符号

$

反引号

`

一些不被视为单词边界的字符

名称示例及备注

连字符

-

分数斜杠

⁄

等号

=

句号(又称点)

.

请注意,空格字符是单词边界。

实际上,嵌入在字母之间且两侧没有空格的句号不作为单词边界字符。

冒号

:

请注意,空格字符是单词边界。

实际上,嵌入在字母之间且两侧没有空格的冒号不作为单词边界字符。

空块元素

<p></p>

此外,其他空元素内部的空格字符——例如 <p>&nbsp;</p>——不会改变单词数或字符数。

字符计数逻辑

Word Count 插件统计字形数。

Word Count 插件不统计为文档管理目的而添加的字符。

假设最终用户输入以下内容:

1↵
↵
2↵
↵

也就是说,他们输入数字 1,接着是两个硬回车,然后是数字 2,再接着是两个硬回车。

默认情况下,TinyMCE 按如下方式存储这些输入的数据:

<p>1</p>
<p>&nbsp;</p>
<p>2</p>
<p>&nbsp;</p>

这些数据的字符计数为 2。

Word Count 不会将 TinyMCE 放置在文档中的任何一个 &nbsp; 字符计入字符计数。

基本设置

tinymce.init({
  selector: 'textarea',  // change this value according to your HTML
  plugins: 'wordcount',
  toolbar: 'wordcount'
});

有关使用模块打包器捆绑此插件的信息,请参阅 Bundling TinyMCE - Overview。

工具栏按钮

Word Count 插件提供以下工具栏按钮:

工具栏按钮标识符描述

wordcount

打开一个显示单词数和字符数的单词计数对话框。

可以通过以下方式将这些工具栏按钮添加到编辑器中:

菜单项

Word Count 插件提供以下菜单项:

菜单项标识符默认菜单位置说明

wordcount

工具

打开显示字数和字符数的字数统计对话框。

可通过以下方式将这些菜单项添加到编辑器中:

命令

Word Count 插件提供以下 TinyMCE 命令。

命令说明

mceWordCount

打开字数统计摘要对话框。

示例
tinymce.activeEditor.execCommand('mceWordCount');

API

Word Count 插件提供了用于获取整个文档或当前编辑器选区的字数和字符数的 API。以下是获取各属性的示例。

示例:使用 wordcount 插件 API

const wordcount = tinymce.activeEditor.plugins.wordcount;

console.log(wordcount.body.getWordCount());
console.log(wordcount.body.getCharacterCount());
console.log(wordcount.body.getCharacterCountWithoutSpaces());

console.log(wordcount.selection.getWordCount());
console.log(wordcount.selection.getCharacterCount());
console.log(wordcount.selection.getCharacterCountWithoutSpaces());