我正在创建一个基于浏览器的QC /数据输入应用程序,它可以让人们编辑OCR文件,这些文件通常存在大量错误。将数据块放在文本区域中以便进行检查,但只有当用户手动将光标放在拼写错误的单词上时,才会出现红色下划线。
有没有办法强制WebKit在文本区域中添加小的红色拼写检查下划线?
我正在创建一个基于浏览器的QC /数据输入应用程序,它可以让人们编辑OCR文件,这些文件通常存在大量错误。将数据块放在文本区域中以便进行检查,但只有当用户手动将光标放在拼写错误的单词上时,才会出现红色下划线。
有没有办法强制WebKit在文本区域中添加小的红色拼写检查下划线?
基本上,您需要使用选择API来移动插入点到每个单词上,以便使Safari对其进行高亮显示。以下是一个示例,用于扫描前一千个单词...
textarea = document.getElementById("mytextarea");
textarea.focus();
var selection = window.getSelection();
selection.modify("move", "backward", "line");
for (var i = 0; i < 1000; i++ ) {
selection.modify("move", "forward", "word");
}
// Remove focus from the element, since the word under
// the cursor won't have a misspelling marker.
textarea.blur();
这段代码摘自WebKit Layout测试套件。
Mark Fowler的回答很好,这里对其进行了改进:
textarea = document.getElementById("mytextarea");
textarea.focus();
var textLength = textarea.value.length;
var selection = window.getSelection();
for (var i = 0; i < textLength; i++ ) {
selection.modify("move", "backward", "character");
}
// Remove focus from the element, since the word under
// the cursor won't have a misspelling marker.
textarea.blur();
因此,您可以避免任意的1000数字,并且它可以处理多行。
我不确定这个方法是否真正可行,但你可以尝试调整选择内容。换句话说,在更新文本区域后(并希望“刷新”以显示红色下划线),你可以尝试做如下操作:
var length = document.getElementById('TEXTAREA#your').value.length;
document.getElementById('TEXTAREA#your').setSelectionRange(0, length);
await wait(0); selection.modify('move', 'forward', 'word');
,其中wait(ms) { return new Promise(resolve=> setTimeout(resolve, ms)) }
。 - Machiaweliczny