behavior: plaintext
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 betweendir="ltr"
anddir="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;