EditContext: updateText() 方法
updateText()
方法是 EditContext
接口的一部分,它用于更新 EditContext
对象的内部文本内容。
当用户在关联元素中输入文本时,无需使用此方法。EditContext
对象会自动更新其内部文本内容,并在需要时触发 textupdate
事件。
但是,当用户以其他方式与文本内容交互时,例如从剪贴板粘贴文本时,可以使用此方法。
语法
js
updateText(rangeStart, rangeEnd, text)
参数
rangeStart
-
表示要替换的文本范围开始位置的数字。
rangeEnd
-
表示要替换的文本范围结束位置的数字。
text
-
表示新文本内容的字符串。
异常
- 如果提供的参数少于三个,则会抛出
TypeError
DOMException
。 - 如果
rangeStart
大于rangeEnd
,则会抛出DOMException
。
示例
在用户粘贴文本时更新编辑器
此示例演示了如何在用户按 Ctrl/Cmd + V 快捷键粘贴文本时,使用 updateText
方法更新 <canvas>
元素的 EditContext
中的文本内容。
此示例还使用 Clipboard.readText()
方法从剪贴板读取文本。
html
<canvas id="editor-canvas"></canvas>
js
const canvas = document.getElementById("editor-canvas");
const ctx = canvas.getContext("2d");
const editContext = new EditContext();
canvas.editContext = editContext;
function render() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillText(editContext.text, 0, 40);
}
editContext.addEventListener("textupdate", (e) => {
render();
});
canvas.addEventListener("keydown", async (e) => {
if (e.key == "v" && (e.ctrlKey || e.metaKey)) {
const pastedText = await navigator.clipboard.readText();
console.log(
`The user pasted the text: ${pastedText}. Updating the EditContext text.`,
);
editContext.updateText(
editContext.selectionStart,
editContext.selectionEnd,
pastedText,
);
editContext.updateSelection(
editContext.selectionStart + pastedText.length,
editContext.selectionStart + pastedText.length,
);
render();
}
});
规范
规范 |
---|
EditContext API # dom-editcontext-updatetext |
浏览器兼容性
BCD 表格仅在浏览器中加载
另请参阅
- 它所属的
EditContext
接口。