文档手册

behavior: plaintext

2024-07-18 16:13:18

behavior: plaintext

针对处理相对较大的(数千行)文本而优化的多行编辑行为。

Elements

默认情况下应用了以下行为:

  • <plaintext>...</plaintext>

Attributes

此行为知道:

  • readonly - 声明元素是只读的。

  • spellcheck - 布尔值,“真” |“false”,启用/禁用拼写检查。

Model

明文将每行文本解析为一个单独的 <text> 元素:

<plaintext>
  <text>Line 1</text>
  <text>Line 2</text>
  <text>Line 3</text>
</plaintext>

Events

与标准事件集(鼠标、键盘、焦点)行为一起:按钮生成:

  • "input""change" /EDIT_VALUE_CHANGED事件 - 由于用户操作而更改元素的值。发布(异步)事件。

  • "changing" event - 在元素值即将更改时发送。同步事件。

Value

string, reflects current status of internal editing buffer.

Special key combinations

  • LEFT, CTRL+LEFT, SHIFT+LEFT, CTRL+SHIFT+LEFT

  • RIGHT, CTRL+RIGHT, SHIFT+RIGHT, CTRL+SHIFT+RIGHT

  • HOME, SHIFT+HOME

  • END, SHIFT+END

  • BACKSPACE, ALT+BACKSPACE, CTRL+BACKSPACE

  • CTRL+A

  • DELETE, SHIFT+DELETE, CTRL+DELETE

  • INSERT, SHIFT+INSERT, CTRL+INSERT

  • CTRL+X

  • CTRL+V

  • CTRL+Z

  • CTRL+(LEFT)SHIFT and CTRL+(RIGHT)SHIFT - in forms having the dir attribute these key combinations switches between dir="ltr" and dir="rtl".

Commands

行为支持的命令 through Element.execCommand()Element.queryMethods()

  • 内容突变命令:

    • "navigate:backward"

    • "navigate:forward"

    • "navigate:word-start

    • "navigate:word-end

    • "navigate:up"

    • "navigate:down"

    • "navigate:line-start"

    • "navigate:line-end"

    • "navigate:start

    • "navigate:end"

    • "edit:cut" - 剪切选区 - 将选区复制到剪贴板并将其删除;

    • "edit:copy" - 将选择复制到剪贴板;

    • "edit:paste" - 粘贴剪贴板的内容;

    • "edit:selectall" - 选择元素的全部内容;

    • "edit:undo" - 撤消上次编辑操作;

    • "edit:redo" - 重做上次撤消的操作;

    • "edit:delete-next" - 如果有选择 - 删除所选内容,否则删除下一个字符;

    • "edit:delete-prev" - 如果有选择 - 删除所选内容,否则删除上一个字符;

    • "edit:delete-word-next" - 如果有选择 - 删除所选内容,否则删除下一个单词;

    • "edit:delete-word-prev" - 如果有选择 - 删除所选内容,否则删除上一个单词;

    • "edit:insert-break" - 插入换行符;

    • "edit:insert-text" - 在当前位置插入文本: element.execCommand("edit:insert-text", text);

    • 导航命令,移动插入符号:

    Script API

    注意:可以使用 .plaintext 在元素上访问明文的 API。接口修饰符:

    const editor = document.$("plaintext#editor");
    editor.plaintext.load("file://users/documents/readme.txt");

    Index accessor and enumeration

    • plaintext.children\[index:integer\] - 字符串,在给定位置获取/设置文本行。将其用作: var firstLine = el.plaintext\[0\];

    • for(let line of el.plaintext.children) - 字符串,允许逐个枚举文本行。

    Properties

    • plaintext.content:

      • read,返回带有 \r\n 行分隔符的字符串 - 文本;

      • write,接受带有 \r\n 行分隔符的字符串或字符串数组。

    • plaintext.lines 只读,整数,报告行数;

    • plaintext.selectionStart plaintext.selectionEnd

      read-only, [lineNumber, linePosition], 返回包含两个元素的数组:行号和行内位置;

    • plaintext.selectionText

      只读、选定文本或空 sting(如果没有选择或选择被折叠)。

    Methods

    • plaintext.load(url:string): true|false

      将文件从 URL 加载到编辑器中;

    • plaintext.save(url:string): true|false

      将内容保存到文件 URL 定义的文件中;

    • plaintext.selectRange(startLine:integer, startPosition:integer, endLine:integer, endPosition:integer)

       选择文本范围;

    • plaintext.selectAll()

       选择所有文本;

    • plaintext.appendLine(text:string | lines: array): true|false

      在文本末尾附加行;

    • plaintext.insertLine(at: integer, text:string | lines: array): true|false

      在位置 n 插入行;

    • plaintext.removeLine(at : integer \[, count: integer\]) : true|false

      删除该位置的线;

    • plaintext.update(mutator:function(tctx) {}) : bool

      执行事务更新,参见 richtext.update;