强制对WebKit中的textarea进行拼写检查

时间:2009-12-10 23:24:46

标签: javascript webkit textarea spell-checking

我正在创建一个基于浏览器的QC /数据输入应用程序,可让人们编辑OCRed文件,这些文件自然会有大量错误。大块的数据放在textareas中,因此可以检查它们,但只有当用户手动将光标放在拼写错误的单词时才会出现红色下划线。

有没有办法强制WebKit将小红色拼写检查下划线添加到textareas?

3 个答案:

答案 0 :(得分:10)

基本上你需要使用选择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 test suite解除。

答案 1 :(得分:2)

我不知道这是否真的有效,但你可能想尝试选择的东西。换句话说,在更新textarea之后(并希望“刷新”它以使红色下划线显示),您可以执行以下操作:

var length = document.getElementById('TEXTAREA#your').value.length;
document.getElementById('TEXTAREA#your').setSelectionRange(0, length);

您可以在此处找到有关如何使用选择的更多信息: How do I select arbitrary text on the page using javascript?或通过Google搜索。

我的想法是创建一个选择(或者在创建它之后清除它)可能会触发一个不同的浏览器事件,这会导致拼写检查刷新...但这只是一个想法;它可能与设置textArea.value(即没有任何东西)完全相同。

答案 2 :(得分:2)

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个数字,它可以处理多行。